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

Как понять выражение " время тупых кодеров прошло " ?

Т. е. если я пишу код чтоб скомпилить его потом в EXE файл то это зря? Сейчас как-то иначе проги пишут?
Олег Ходос
Олег Ходос
1 632
Для меня лично понятие попроще... .
Тупой кодер пишет как тупому кодеру удобно, а умный кодер пишет как юзеру тупому удобней....
Asker Abduveliyev
Asker Abduveliyev
23 034
Лучший ответ
Индусский код (также известен как Gletch) — в самом общем случае, это криво написанный код. Однако на самом деле, под индусским кодом подразумевают код, написанный наиболее неочевидным и неестественным из всех возможных способов.

По другой трактовке, индусский код — жаргонное название для программного кода крайне низкого качества, использующего простые, но порочные принципы «copy-paste», «главное завалить — а там запинаем» , «шапкозакидательство» . Так же известен как «write only», или — «написанное однажды — лучше не читать»

Пример:
uint i;
...
if (i.ToString().Length == 1)
{
...
}
Не сразу можно понять, что в этом коде просто-напросто выполняется проверка i < 10. Алгоритм достаточно прост: выполняется преобразование i в строку, после чего вычисляется её длина. Если число больше 9, то его десятичная запись содержит больше одного символа. Отрицательные числа переменная типа uint содержать не может. Проверку проходят лишь числа от 0 до 9. Алгоритм ресурсоёмок, не очевиден и не поддается сопровождению даже теоретически.

Еще пример:
bool IsNumber (string str)
{
return (str.Replace ("0", "").Replace ("1", "").Replace ("2", "").Replace ("3", "").Replace ("4", "").Replace ("5", "").Replace ("6", "").Replace ("7", "").
Replace ("8", "").Replace ("9", "").Length == 0);
}
Хотя в данном случае, вообще говоря, алгоритм вполне очевиден, не менее очевидно и то, что для его выполнения конструктор класса string будет вызван не менее десяти раз, со всеми вытекающими из этого последствиями. И всё только потому, что какому-то индусу было лень придумать менее ресурсоёмкую альтернативу.

Kитайский код — стиль написания программ, нарушающий принцип НПС («Не повторяй себя») . Китайский подход к программированию требует эксплицитного отказа от циклов, локальных переменных, любых процедур и условных выражений, а также использования технологии cut-and-paste чуть менее, чем везде. Такой подход увеличивает не только объём исходников, но и производительность (ведь пропускаются такты на джамповые команды [3]).

Возьмём, к примеру, такой кусочек программы на C:
int arr[10];
int i;
for (i = 0; i < 10; i++)
{
arr[ i ] = 0;
}

Который, кстати, вполне мог бы выглядеть и так:
int arr[10];
memset(arr, 0, sizeof(arr));

Типичный программист в китайском стиле напишет это так:
int a0 = 0;int a1 = 0;int a2 = 0;int a3 = 0;int a4 = 0;int a5 = 0;
int a6 = 0;int a7 = 0;int a8 = 0;

и в дальнейшем будет использовать a0, a1, a2, a3, a4 и т. д. Например, вместо прекрасного:
if (x < 10) arr[x] = x;

который особенно прекрасен если "x" меньше нуля, будет:
if (x == 0)
{
a0 = x;
}
else if (x == 1)
{
a1 = x;
}
else if (x == 2)
{
...
}

Быдлокодер (англ. Code Monkey) — это человек, который считает рекурсию мемом башорга, не знает основных алгоритмов и тонкостей языка, на котором пишет, и поэтому использует неочевидные и абсурдные решения, а зачастую вообще использует исключительно готовые алгоритмы и программы, находя их на OpenSource.net или сайтах, подобных CodeGuru. Понятие быдлокодера тесно связано с понятием индусского кода, которое также является одним из мемов Рунета. Также быдлокодерами именуются программисты, пишущие исключительно на языках подобных VB и привыкшие программировать мышкой, результатом чего является отсутствие языковой грамотности, понимания собственного кода и культуры программирования. Программы таких быдлокодеров никогда не бывают кроссплатформенными и редко бывают стабильными.
Пример быдлокодерства на языке C++
void SprositiPolzovatela()
{
for(int i=1;i<5;i++)
{
cout << "OK? (y/n) ";
cin >> c;
// bol'shie i malen'kie bukvi
if(c!='y' && c!='Y' && c!='n' && c!='N') i--;
else i=10;
}}
Здесь человек, вместо того, чтобы организовать условный цикл, использует цикл со счетчиком и манипулирует переменной внутри цикла, уменьшая ее на единицу, если пользователь ввел недопустимые символы, организуя таким образом вечный цикл
Вопрос настолько обширный что не берусь ответить, а то камнями закидают. А вообще в програмиировани важен красивый способ решить проблему.
приведу пример чтобы Пашу поддержать.
Если у тебя есть переменная, которая может быть равна только 1 или 2, и тебе надо поменять ее значение на другое (т. е. с 1 на два или с 2 на 1) то тупой кодер напишет

if(i==1) i=2;
if(i==2) i=1;

а умный напишет
i=3-i;

только за вот тот, второй вариант, за него потом люди, которые код читают, морду бьют...
Павел Латыев
Павел Латыев
2 247
Олег Ходос а по моему не важно как я там написал клиенту главное чтоб работало без глюков
Я согласен с "Миша К". Но такие знания языка не говорят о том, что человек может решать серьезные задачи. Тупые кодеры - это те, кто изобретали велосипед. Хотя конечно хотелось бы узнать в результате чего и кем было сказано такое выражение! ? Если у человека мания величия, то это не говорит еще о том, что он - серьезный программист. Конечно все что написано мной - офтоп, но если автор фразы не смог аргументировать свой ответ, значит он просто п&ц.
Как сейчас так и раньше, при создании большого проэкта надо много людей!
Составляются требования, разрабатывается алгоритм, кодинг, тестирование!! ! Вот эта фраза говорит, кодеры - поумнели!! ! Они не просто давят кнопки а еще и головой думают!!!