LINUX.ORG.RU
ФорумTalks

RAD портит мозги юных программистов


0

0

Принесли мне прогу для тестирования. Написана в Багланд C++. Основной алгоритм закодирован в подпрограмме на 245 строк, goto наличествует, потенциальные баги видно невооруженным глазом. Но зато какой GUI... глаз не оторвать.

★★★★★

> глаз не оторвать.

прилипли как язык на морозе?

vilfred ☆☆
()

Borland не причем, если человек дурак, или учили его через жопу, его никакой лисп не спасет. ПС А про goto в любой книжке же вроде пишут: "использовать в самом крайнем случае".

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

>на 245 строк

ППС Попробовал вспомнить, когда у меня в дельфях подпрограмма была больше 30 строк, не вспомнил.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

>Borland не причем, если человек дурак, или учили его через жопу

+1, брат сейчас учится на первом курсе в одном замечательном ВУЗе... так ситуация, когда прога работает как надо, а преподаватель говорит "я не понимаю как она работает, потому 3" дело частое. И методички, в которых пример просто тупо не дописан (определения ф-ций есть, а реализации нет))) ). И после этого какой код должны эти люди писать? Так что RAD здесь ни причем.

h8 ★★★
()
Ответ на: комментарий от madcore

Дело в том, что RAD'иевые программисты сначала мастерят GUI, а потом набивают его полезным содержимым. Видимо, под конец работы энтузиазм у разработчика резко угасает (все силы ушли на GUI) и код домучивается по принципу "лишь бы как-нибудь заработало".

P.S. но эта программа написана не программистом, поэтому её автору такие перлы позволительны.

seiken ★★★★★
() автор топика
Ответ на: комментарий от redgremlin

Без goto нельзя осуществить нелокальный выход из функции. Понятно, что еще есть cath/throw, но в С их вроде как нету.

Sun-ch
()
Ответ на: комментарий от seiken

>RAD'иевые программисты сначала мастерят GUI

Это быдлокодеры. Я сначала объектную модель создаю, потом ее компонентно реализую, а потом уже за две минуты приличный гуй. Удобно.

ПС Особо больших проектов нет.

redgremlin ★★★★★
()
Ответ на: комментарий от redgremlin

> ППС Попробовал вспомнить, когда у меня в дельфях подпрограмма была больше 30 строк, не вспомнил.

ППС, попытался вспомнить, когда у меня на C++ метод был больше 10 строк, не вспомнил :))

fmj
()
Ответ на: комментарий от Sun-ch

У нас здесь goto используется для прыжков внутри подпрограммы. Но это фильтр шумов, и он должен работать _быстро_.

seiken ★★★★★
() автор топика
Ответ на: комментарий от redgremlin

А при чем тут борланд, неправильно просто говорить, что goto нужно избегать, авторы этих книжек - теоретики хреновы навроде Вирта и промыщленного программирования никогда не нюхали.

Sun-ch
()
Ответ на: комментарий от seiken

> goto используется для прыжков внутри подпрограммы. Но это фильтр шумов, и он должен работать _быстро_

Быстрее всего работаеют линейные куски программы, на втором месте - куски с хорошо предсказуемыми переходами.

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

>авторы этих книжек - теоретики хреновы навроде Вирта и промыщленного программирования никогда не нюхали.

s/промыщленного/ынтерпрайз-на-жабе/

anonymous
()
Ответ на: комментарий от Sun-ch

> Без goto нельзя осуществить нелокальный выход из функции. Понятно, что еще есть cath/throw, но в С их вроде как нету.

Саныч, не позорься. В Си goto не может совершить нелокальный выход из функции. longjmp наше все.

dilmah ★★★★★
()
Ответ на: комментарий от tailgunner

>Быстрее всего работаеют линейные куски программы, на втором месте - куски с хорошо предсказуемыми переходами.

Это с т.з. алгоритма предвыборки?

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

>> Быстрее всего работаеют линейные куски программы, на втором месте - куски с хорошо предсказуемыми переходами.

> Это с т.з. алгоритма предвыборки?

Первые - с точки зрения всего, вторые - спекулятивное исполнение и промахи кэша.

tailgunner ★★★★★
()

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

seiken ★★★★★
() автор топика
Ответ на: комментарий от smh

>И причем здесь Борланд С++? Не вижу ничего плохого в RAD.

Низкий порог вхождения и ложная уверенность в том, что визарды и VCL заменят хороший стиль программирования приводит к печальным результатом. Вот многие, например, ругают пользователей винды, что они мол такие сякие тупые маздайные юзеры. А всё из-за низкого порога вхождения. И здесь то же самое.

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

хотя по большому счету да, Борланд здесь не причем

seiken ★★★★★
() автор топика

> Написана в Багланд C++.

Там нет RAD в смысле дизайнера окошек и накликивания компонент на форму. Такой RAD есть только в редкостном угребище под названием C++ билдер, в котором чтобы впихнуть VCL в C++ багландовцы понапихали в C++ своих нестандартных расширений, дернутых из ObjectPascal и все-равно часть кода осталась паскалевской и в состав билдера входит дельфи-компилятор.

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

Ты говоришь у программы хороший гуй, может быть вместо программирования тому лучше бы заняться дизайном? Хорошие дизайнеры интерфейса тоже нужны. Или если совсем новичок пусть кодит без визуальных сред.

anonymous
()
Ответ на: комментарий от seiken

>Низкий порог вхождения и ложная уверенность в том, что визарды и VCL заменят хороший стиль программирования приводит к печальным результатом.

Низкий порог вхождения и увереннность в том, что стиль программирования заменит продуманное и удобное GUI приводит к печальным результатам

anonymous
()

RAD - убивает программистов наповал!

UserUnknown ★★★★★
()
Ответ на: комментарий от anonymous

>Ты говоришь у программы хороший гуй, может быть вместо программирования тому лучше бы заняться дизайном? Хорошие дизайнеры интерфейса тоже нужны. Или если совсем новичок пусть кодит без визуальных сред.

В том то и дело, что он не программист и в свободное от работы время ему есть чем заняться помимо программирования. А проги пишет, потому что понадобилось для дисcера.

seiken ★★★★★
() автор топика
Ответ на: комментарий от Burbaka

>Низкий порог вхождения и увереннность в том,
>что стиль программирования заменит продуманное и удобное GUI
>приводит к печальным результатам

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

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

так дико на это всегда смотреть было...

но самое страшное (!) - это быдлопереподы!
мне делали замечание как раз за некрасивый гуй, промолчав что калькулятор строит графики, пишет логи, печатает расчеты, умеет брать форумылы из тхт, дописывая туда-же ответы
(от нефиг делать добавил это)

учат так !
в хреновых заведениях Так Учат.

dk-
()
Ответ на: комментарий от Burbaka

goto - инструкция перехода, линейный кусок программы - последовательно выполняющийся код (инструкции) без условных/безусловных переходов (т.е. без "прыгания" InstructionPointer)

anonymous
()
Ответ на: комментарий от seiken

> что борланд и гцц по умолчанию не кричат об использовании небезопасных функций типа strcpy

В руках нормального программиста strcpy не опаснее mass[i]

cvs-255 ★★★★★
()
Ответ на: комментарий от Sun-ch

> Без goto нельзя осуществить нелокальный выход из функции. Понятно, что еще есть cath/throw, но в С их вроде как нету.

Открой для себя setjmp/longjmp

Miguel ★★★★★
()
Ответ на: комментарий от kmeaw

> Всё равно call/cc круче.

Ну, это стопудово.

Miguel ★★★★★
()
Ответ на: комментарий от dk-

А потом, нарисовав GUI, за 5 минут до конца лабы судорожно пишут в С'шную строку после '\0', не выделяя при этом память. В топку такие программы. Кто утверждает обратное просто никогда не переписывал подобные творения. Хотя Багланд здесь действительно не причём. Это проблема обучения и студентов (причём студентов инженерных специальностей, а не каких-нибудь философов).

seiken ★★★★★
() автор топика
Ответ на: комментарий от redgremlin

> Borland не причем, если человек дурак, или учили его через жопу, его никакой лисп не спасет. ПС А про goto в любой книжке же вроде пишут: "использовать в самом крайнем случае".

похоже комрадо с сотоварищами не в курсе этого золотого правила..

$ grep -r -e " goto " /pub/linux-2.6.22.1/ | wc -l
1453

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

> Borland не причем, если человек дурак, или учили его через жопу, его никакой лисп не спасет. ПС А про goto в любой книжке же вроде пишут: "использовать в самом крайнем случае".

А собственно чем вам не нравится goto?

Там где нужно выйти из нескольких вложенных циклов goto очень помогает

cvs-255 ★★★★★
()
Ответ на: комментарий от klalafuda

А я так думаю, что ядро как всего лишь одна из системных программ не может считаться мерилом хорошего стиля для всех и вся.

seiken ★★★★★
() автор топика

Посмотрел только что код. Goto используется для организации простого цикла типа while(1) {...}. Я думаю, что это тяжёлое наследие бейсико-ассемблерного опыта.

seiken ★★★★★
() автор топика
Ответ на: комментарий от seiken

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

ну что касается ядра одной небезызвестной системы, то оно в общем и целом с трудом дотягивает до мерила чего либо...

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от seiken

>>Я думаю, что это тяжёлое наследие бейсико-ассемблерного опыта.

Не надо гнать на бейсик, цикла for там никто не отменял.

А если всякие "преподы" предлагают писать на бейсике цикл на goto - то ученики не виноваты.

Lockywolf ★★★
()
Ответ на: комментарий от cvs-255

>А собственно чем вам не нравится goto?

А тем, что вот так научатся пользоваться "удобным" goto, и начнут его пихать по делу и без дела. Во что превратится отладка, думаю объяснять не надо. Во многих случаях можно изменить логику, избавляясь от goto, на ОЯП есть эксепшены. Я не говорю, что он не нужен, но это последнее средство, когда избавление от goto ощутимо усложнит код.

redgremlin ★★★★★
()
Ответ на: комментарий от anonymous

> goto - инструкция перехода, линейный кусок программы - последовательно выполняющийся код (инструкции) без условных/безусловных переходов (т.е. без "прыгания" InstructionPointer)

Сам определение придумал ? Хвалю

Burbaka ★★
()
Ответ на: комментарий от klalafuda

> ну что касается ядра одной небезызвестной системы, то оно в общем и целом с трудом дотягивает до мерила чего либо...

Ой какие мы серьезные... ты чем мерял это мерило?

tailgunner ★★★★★
()
Ответ на: комментарий от Lockywolf

В языке "C" предусмотрен и оператор GOTO, которым беско-
нечно злоупотребляют, и метки для ветвления. С формальной
точки зрения оператор GOTO никогда не является необходимым,
и на практике почти всегда можно обойтись без него.
...
Программа, использующая оператор GOTO, всегда может быть
написана без него, хотя, возможно, за счет повторения неко-
торых проверок и введения дополнительных переменных.
(c) Керниган, Ричи

по сабжу: да, портит. я сам раньше так подсел на RAD'ы, что при переходе на Linux покупал на базаре крякнутый Kylix.
потом полегчало - kwrite + konsole + gcc. потом стало еще легче - xemacs + powershell + gcc.
ну а щас совсем легко: vim + screen + tcsh + gcc.

saahriktu ★★★★★
()
Ответ на: комментарий от tailgunner

> Приведи свое определение линейного куска.

:) Соовокупность операторов программы, связанных по управлению, не содержащих условных операторов, операторов цикла и им подобных

Burbaka ★★
()
Ответ на: комментарий от Burbaka

>> Приведи свое определение линейного куска.

>:) Соовокупность операторов программы, связанных по управлению, не содержащих условных операторов, операторов цикла и им подобных

Ну и в чем разница между goto и, например, условным оператором?

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.