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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.