Другие языки программирования и технологии

Как уменьшить количество строк в коде?

Здраствуйте! Я школьник. Я только начинаю учиться программировать (в основном получаю знания из бесплатных видео - курсов). Долго решал одну задачу, но все же решил, мне показалось, что он какой - то большой. Посмотрел, как решили другие, и их код был намного меньше моего. Сказал себе: "Ну хоть работет :D ". Это приходит со временем или этот навык нужно как-то развивать ?
Бинь Ян
Бинь Ян
159
#include <файл>
включит все, даже всю винду, но от этого код быстрее не будет.
Вы проверяйте код не только по длине, но и по скорости, так как короче не значит еще хорошо.
Ну и покажите код, мы подумаем тоже над ним
Хасанбой Рустамов
Хасанбой Рустамов
81 603
Лучший ответ
Главное правило такое: если захотелось скопировать кусок кода, надо дать себе по рукам и подумать, как можно этого избежать. Все остальное упирается в знание технологий и/или библиотек, нарабатывается со временем.
Страх "большого кода" это не навык, а болезнь. Со временем, и при накоплении опыта - она наоборот, проходит. Главное чтобы код был эффективным, чистым, корректно оформленным... а количество строк и символов, реального значения не имеет.
АЛ
Артем Лысюк
57 578
> в основном получаю знания из бесплатных видео - курсов
Лучше читай книги. Хороших курсов мало. Новичок не может отличить хорошие курсы от плохих.

> Я только начинаю учиться программировать
Может у тебя просто недостаточно знаний, чтоб написать более компактный код? Будешь изучать программирование и научишься. Теория + практика.
Алекс Филиппов
Алекс Филиппов
58 065
10-15К вместе с комментариями - нормальная длинна.
Если код сильно больше 30К, тогда можно разделить на несколько файлов. Ресурсы не в счёт - их можно и по мегабайту делать.
Используй Sub и Function
По мере изучение языка ты узнаешь всё больше методов, конструкций. Некоторые логические операции можно сократить путём применение какой либо конструкции.
К примеру для проверки массива в php, нет обязанности возиться с каждым значением. А можно применить иную конструкцию - foreach
Всё это приходит по мере изучение языка.
Бинь Ян Спасибо за ответ и разъяснения)
Лучше париться на счет оптимизации кода, нежели чем над количеством строк в коде.

1. Оптимизировать можно практически всё. И даже там, где тебе кажется, что всё работает быстро, можно сделать ещё быстрее. Необходимо помнить, что любую задачу можно решить несколькими путями, и твоя задача выбрать из них наиболее рациональный.

2. Оптимизацию всегда надо начинать со слабых мест в коде программы. Обычно оптимизировать то, что и так быстро работает, необходимости не возникает. Да и эффект такой оптимизации будет минимален.

3. При оптимизации нужно разбирать все операции, каждый оператор, ничего не пропуская. Обычно оптимизацию начинают с тех мест в коде, где находятся регулярно повторяющиеся операции, циклы. То, что находится внутри цикла, будет повторена n количество раз, поэтому, чем меньше кода находится в цикле, тем быстрее процессор просчитает его. Если цикл получается слишком большой, его можно разложить на несколько более маленьких. В данном случае размер нашей программы повыситься, зато скорость увеличиться.

4. Старайтесь поменьше использовать вычисления с плавающей запятой. Любые операции с целыми числами выполняются на порядок быстрее. Операции умножения или деления также выполняются достаточно долго. Вместо умножения лучше использовать сложение, а деление можно заменить сдвигом. Сдвиг работает намного быстрее и умножения, и деления. Это связано с тем, что все числа хранятся в двоичной системе. Если перевести число из десятичной системы счисления в двоичную и сдвинуть число вправо на одну позицию, то можно заметить, что данная операция аналогична делению на 2. При сдвиге влево происходит деление числа на 2. Хоть эти операции и аналогичны, но сдвиг работает в несколько раз быстрее.

5. При создании процедур не надо обременять их большим количеством входных параметров. А всё потому, что при каждом вызове процедуры её параметры подымаются в специальную область памяти, стек, а после выхода изымаются оттуда. Также необходимо действовать аккуратно и с самими параметрами. Не надо пересылать процедурам переменные, содержащие данные большого объёма в чистом виде. Лучше передать адрес ячейки памяти, где хранятся данные, а внутри процедуры уже работать с этим адресом.

6. В самых критических моментах работы программы, например вывод на экран, можно воспользоваться языком Assembler. Даже встроенный в Delphi ассемблер намного быстрее родных функций языка. Код ассемблера можно вынести в отдельный модуль, откомпилировать и подключить к своей программе.

7. Лишних проверок не бывает. Не надо думать, что если у вас не возникла какая-то нестандартная ситуация, то она не возникнет и у пользователя. Всегда делайте проверку того, что вводит пользователь, не дожидаясь, когда эти данные понадобятся.

8. Если ты пишешь достаточно большую и громоздкую программу, добавляй в неё комментарии. Компилятор их всё равно игнорирует. И если вдруг тебе захочется продать исходные коды своих программ, комментарии повысят им цену, да и самому будет легче в них ориентироваться.

9. Для достижения хорошего эффекта ты должен знать IDE, интегрированную среду разработчика, языка, на котором ты программируешь, в нашем случае Delphi. Обычно в опциях IDE разрешается выбирать различные типы компиляторов, а по умолчанию стоит самый простой, быстро компилирующий, но создающий менее оптимизированный код. Поэтому всегда ставь самый оптимизирующий вид компилятора.

10. Старайся делать в программах стандартный интерфейс. Ну не надо делать треугольные кнопочки, нестандартные меню и прочие графические навороты. Всё это очень сильно тормозит программу, расходует большое количество ресурсов компьютера и требует дополнительного времени на разработку. К примеру, настоящий UNIX – это вообще обычный shell.

Статья 2005 года, но советы - годные. Источник указан. Удачи.
Алекс Филиппов > но советы - годные
Не все. Часть советов - бред, даже для 2005 года.
Сергей Неизвесно Лучше париться на счет оптимизации кода, нежели чем над количеством строк в коде.

Пусть это останется главной мыслью ;з
Фархат Нурахунов 5 и 6 советы довольно спорные. 5. Большинство CPU оптимизируют память на стеке так, чтобы она всегда была в кэше. Поэтому пара десятков переменных на стеке - ОК. А вот выделять большой массив на стеке = гарантированно замусорить кэш.
6. В 2018 году переносимость стала важнее оптимизации. Даже я, некогда фанат ассемблера, уже 3 года его почти не использовал... Столько знаний пропадает...
Развивать нужно, конечно же) Знаешь больше методик - больше реализаций, а они отличаются как быстродействием, так и объёмом кода. Плюс, если знаешь несколько языков, можешь выбрать более компактный, если позволяет задача
Бинь Ян Спасибо! Буду самосовершенствоваться в программировании))
Со временем, но без развития не получится.
Бинь Ян Спасибо)