Войти
ФлеймФорумПрограммирование

Почему некоторые программисты выбирают Delphi? (4 стр)

Страницы: 13 4 5 6185 Следующая »
#45
1:50, 4 мар. 2011

Думаю, просто название "С" - слишком короткое, а "С++" ещё и пугающее - какие то плюсЫ там еретические... а когда там еще и непонятные скобки встречаются на каждом шагу ... то тут уже при беглом взгляде на код Любитель Дельфи закрывает IDE/Блокнот/Книгу с мыслью "да ну его нах". А ещё, плохо крякнутые игры частенько падали с ошибками C++ Runtime, что уже какбэ намекает на то что С++ отстой :D Не холивар.


#46
2:03, 4 мар. 2011

А по сабжу - наверное потому почему и выбирают MVC вместо IC. Не холивар. )

#47
2:43, 4 мар. 2011

SNVampyre
> Вобщем гондурасский код.
Конечно гондурасский, явно написанный гондурасом не знающим что такое case.
кстати, switch приплюснутый требует идиотские break. да, есть задачки, которые можно решить, если не ставить break в case, но таких задач меньшиство, гораздо логичнее было сделать оператор перехода к следующему элементу, чем оператор прерывания, который нужно тыкать каждый раз.

SNVampyre
> а программисты будут писать короткий и красивый код.
Нормальные программисты не экономят на читабельности ради короткого кода и пишут нормальный и красивый код, причем с хорошей скоростью за счет грамотного автодополнения. В часности писать end не приходится вообще никогда, потому что IDE сама его подставляет. Все остальные идентефикаторы тоже. Методы класса оформляются автоматически, сеттеры/геттеры оформляются автоматически.
Так что пока ты экономишь на : в присвоении, мы пишем код, а не одинаковые конструкции, которые генерит IDE.

НЕ холивар. :)

UPD:
На любом языке можно писать криво, что и показывает этот пример.
Должно быть:
value2 := value+1;

Если уж там не такой идиотский случай:

case value of
  0:value2:=1;
  1:value2:=2;
  2:value2:=3;
  3:value2:=4;
end;

на с++ будет

switch(value){
  case 0: value2 = 1;
             break;
  case 1: value2 = 2;
             break;
  case 2: value2 = 3;
             break;
  case 3: value2 = 4;
             break;
};
Где кода меньше?

UPD2:
По поводу for.
C++ for мощнее, но он и не for вовсе, это самый обычный while, с слегка другим синтаксисом.
С одной стороны он более гибкий, с другой стороны цикл на дельфи быстрее за счет того, что счетчик классический и переводится напрямую в команды на асме, а если нужна гибкость while ее дает.

#48
3:21, 4 мар. 2011

@!!ex
> Нормальные программисты не экономят на читабельности ради короткого кода
И поэтому выбирают C++, так как на C++ гораздо проще написать короткий и читабельный код. Пример привёл на предыдущей странице.

#49
3:25, 4 мар. 2011

Пример на предыдущей страницы НЕ читабелен.
Почему? Потому что для того, чтобы понять что b и с не часть условного выражения - нужно посчитать скобки, в то время как в паскале достаточно найти ключевое слово then. Конкретно в этом примере выражение условное простое и выделить условное выражение легко, в реально жизни примеры сложнее.
Так что это как раз пример худшей читабельности.

UPD:
Кстати, будучи джуниор-джуниором программером в одной большой геймдев конторе одна из моих работ заключалась в том, чтобы подобные выражения приводить в читабельный вид. то есть, внезапно, в больших проектах так не пишут. странно, да, ведь код то компактный и читабельный типа.

#50
3:33, 4 мар. 2011

@!!ex
Какие скобки?
Это очевидная и легко читаемая для человека конструкция:

if(condition)  makeSomething ();
Это говнокод, за который надо рубить головы:
if condition <> 0 then
begin
makeSomething ();
end;
#51
3:39, 4 мар. 2011

SNVampyre
Если condition из одного слова - ок, если там пяток выражений уже так очевидно не будет.

Зачем begin end? отличие там на уровне then и сравнением с 0
if condition<>0 then makeSomething();

и как я уже выше написал, then четко отделяет условие от кода.
в куче скобочек понять где-что - сложнее, особенно если кто-то экономит на идентификаторах и называет функции a,b,c

UPD:
Кстати, а чего пример-то сменил? Внезапно оказалось что предыдущий пример хреновый?

#52
3:44, 4 мар. 2011

@!!ex
> Кстати, а чего пример-то сменил? Внезапно оказалось что предыдущий пример хреновый?
В смысле сменил? Ты про запятые что ли?
Ну да, такой финт ушами в паскале уже не сделать никак:

if(condition) makeSomething1 (), makeSomething2 ();
Паскаль из-за пустых слов превратится как минимум в кашу, так что придётся писать в 4 строки как у убогих программистов, тем самым превратив код в такое месиво, которое вообще невозможно разобрать.
#53
3:48, 4 мар. 2011

SNVampyre
> В смысле сменил? Ты про запятые что ли?
нет. я вот про это:

if(a) b (), c ();
Реально каша, которую невозможно читать. В которой для понимания где код, а где условие - нужно разобрать выражение.
if condition then begin
   makeSomething1 (); makeSomething2 ();
end;
Где здесь каша и что плохо читается?
при этом нет проблем с отделением условия от кода.
Вот begin лишний, это да. Поэтому, к примеру, в Lua его нет и код более гладкий .
if condition then
  makeSomething1 (); makeSomething2 ();
end;

SNVampyre
> Паскаль из-за пустых слов
Единственное ненужное слово там begin, остальные как раз улучшают читабельность. Они позволяют быстро просматривать код и обращать внимание на важные участки кода, не останавливаясь на попытках понять где-же кончаются скобочки условия и начинаются скобочки кода.

UPD:
хотя не прав. begin тут не лишний. он лишним становится при использовании else

#54
3:53, 4 мар. 2011

SNVampyre

>if(condition) makeSomething1 (), makeSomething2 ();

Только периодически некоторые "православные" вместо "," ставят ";" и долго думают опосля. Люди не роботы, ошибки им свойственны, чисто механические, паскаль от откровенно глупых ошибок уберегает, заставляя писать блочно, структурно и формально.
То что некоторым ремесленникам, которые оценивают объем работ по количеству набранного текста, это не нравится, вполне понятно и объяснимо.

#55
3:56, 4 мар. 2011

Don Nikola
> Только периодически некоторые "православные" вместо "," ставят ";" и долго
> думают опосля.
Кстати да, на автомате, конец выражения, автоматически закрывающий оператор.

по поводу читабельности С++ пока примеры убогие. Уверен что есть нормальные примеры, но их пока не приводили.

#56
3:59, 4 мар. 2011

@!!ex
> Реально каша, которую невозможно читать. В которой для понимания где код, а где
> условие - нужно разобрать выражение.
Ты реально программист?
Ты что не понимаешь, что это:

if(a) b (), c ();
И это:
if(condition) makeSomething1 (), makeSomething2 ();
- это одно и то же?

@!!ex
> Где здесь каша и что плохо читается?
Тут код вообще нечитаемый. Во-первых, отсутствие скобочек в условии заставляет потратить значительное время чтобы понять, что это за код, и код ли это. Больше похоже на просто текст, будто забыли комментарий поставить. Во-вторых, слова then, begin, end, которые приходится читать вместе с остальным кодом и пытаться отделить синтаксические прибамбасы этого уродского языка от реального кода. Отсутствие запятых в перечислении действий заставляет думать, что это набор каких-то переходов и ветвлений, а после вдумчивого анализа этого бреда понимаешь, что там только одно ветвление. Несоответствие количества зарезервированных слов, точек с запятой и реальных действий. Резервные слова должны показывать какие-то системные действия: выделение переменных, ветвление или управление памятью. Синтаксис должен подчёркиваться знаками препинания, а все остальные слова в тексте - это либо комментарии, либо названия переменных, либо названия функций. Вот это настоящий код, легкочитаемый и удобный.

#57
4:01, 4 мар. 2011

Don Nikola
> Только периодически некоторые "православные" вместо "," ставят ";" и долго думают опосля.
Только придурок может спутать запятую и точку с запятой. В подсветке синтаксиса знаки препинания всегда выделены другим цветом и по ним чётко видно структуру кода, причём быстро.

#58
4:02, 4 мар. 2011

SNVampyre
> Ты что не понимаешь, что это:
> if(a) b (), c ();
> И это:
> if(condition) makeSomething1 (), makeSomething2 ();
> - это одно и то же?
Это НЕ одно и тоже.
Первый пример ты привел как удобный для чтения, так вот, он НЕ удобен для чтения.

SNVampyre
> Тут код вообще нечитаемый. Во-первых, отсутствие скобочек в условии заставляет
> потратить значительное время чтобы понять, что это за код, и код ли это.
Это и все остальное действительно верно, но только при одном условии: если нет подсветки синтаксиса.
Я специально в тэг code все определил, с подсветкой читается прекрасно, не нужно тратить время вообще ни на что, все блоки влет распознаются.
А вот это: if(a) b (), c (); что с подсветкой, что без нее читается одинаково хреново.

#59
4:03, 4 мар. 2011

SNVampyre
> В подсветке синтаксиса знаки препинания всегда выделены другим цветом и по ним
> чётко видно структуру кода, причём быстро.
Я не знаю что у тебя за IDE.
У меня в MSVC2008 выглядит вот так:

if(condition) makeSomething1 (), makeSomething2 ();

SNVampyre
> Только придурок может спутать запятую и точку с запятой.
тут ты прав. При вдумчивом чтении кода. А основную часть кода приходится просматривать выделяя нужные блоки, легко пропустить что знак не тот.

В частности, почему я прицепился к этому примеру:

if(a) b (), c ();

потому что при первом взгляде на этот текст мозг(лично мой, ага) игнорирует закрывающую скобку при а, и воспринимает всю коснтрукцию как целое и только повторное прочтение дает нужный результат. Это отличный пример убогой читаемости.

Время потраченное на рассматривание подсвеченных then begin end - ерунда по сравнению с временем которое нужно потратить для правильного распознавания структуры скобочек. Тут С++ спасает отсутствие необходимости в скобки выделять булевы операции, а то бы вообще крандец был.

Страницы: 13 4 5 6185 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.