Здравствуйте, unintruder, Вы писали:
U>Послушай передачу Троицкий и Ф.М. Достоевский. Артемий предоставлял зрителям альбомы человека, который всю жизнь живет в Финляндии, в лесу, то что он делает надо слышать, или альбом индуса, датированный 1976 годом, электроная музыка "продиджи+Моби" в одном флаконе, саунд более чем современный. Они не профессионалы, в том смысле, как ты это понимаешь, но результат на лицо. Я хотел сказать, что это слишком категоричное заявление, вот если бы ты привел в пример бокс — любительский против профессионального, это наверное более близко выразило твою мысль.
Композиторы, панимаешь!!!!
Обрати внимание: в так называемых творческих профессиях много зависит от таланта. В программировании — совершенно не то положение. Программисты гораздо больше похожи на исполнителей. чем на композиторов. Даже самая творческая элита — архитекторы — должны МНОГО учиться. Просто наша область СИЛЬНО СПЕЦИФИЧЕСКАЯ.
Просто у меня под началом работали программисты-любители (без образования). Извините, но человек, имеющий даже то образование, которое есть, в целом пишет лучше — это мой опыт. Конечно, феномены есть во всякой области, но это все-таки исключение из правил. А вирт ведет речь о массовой подготовке ПРОФЕССИОНАЛОВ, а не про отдельную индивидуальную подготовку. Тут я с ним полнорстью согласен.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, bkat, Вы писали:
B>Что как раз иллюстрирует, что проблемы куда глубже, B>чем ошибки, не выловленные компилятором.
Естественно!
Поэтому давайте займемся теми проблемами, которые компиляторы не умеют выявлять, а то, что они могут найти — пусть находят по полной, а не заставляют терять время в многочасовых code review.
Здравствуйте, bkat, Вы писали:
B>Но в реальной жизни на преодаление ограничений, накладываемые компилятором, B>могут быть потрачены такие усилия, что вся надежность будет перечеркнута B>и даже будет еще хуже.
В реальной жизни языки вроде джавы и шарпа с их рантаймом значительно снижают количество ошибок.
B>Почему придется преодалевать эти ограничения? Да просто жизнь такая B>Можно почитать форумы тут на RSDN и проследить, как много усилий тратиться на разные B>хаки и трюки, которые, кстати говоря, очень часто вызывают восхищение и B>считаются "красивыми" решениями.
LVV>...и сами пали перед лицом самого недостойного из соперников — C.LVV>
Ревнители частоты языка часто нападают на С++. Они полагают, что высшее достижение современной цивилизации — язык, построенный исключительно из атомов и скобок. По мнению этих террористов от синтаксиса, если простую переменную с первого взгляда невозможно отличить от вызова функции или макроса — это вообще не язык, а шарлатанство для развлечения праздной толпы. К сожалению, теория расходится с практикой. В реальной жизни толпа платит лишь за то, чтобы видеть языки, в которых разные идеи выглядят по-разному. «Простые и последовательные» языки никогда не пользовались особым успехом за стенками академий, а языки с блочной структурой овладели массами. Стоит ли этому удивляться? Ведь компьютерные языки приходится изучать и запоминать, а для этого используется то же серое вещество, с помощью которого мы изучаем и запоминаем естественные языки. Попробуйте-ка назвать хотя бы один естественный язык без существительных, глаголов и скобок! Я бы не рискнул. Все наши познания в лингвистике говорят о том, что эти «плохие» особенности только ускоряют изучение компьютерного языка и делают его более понятным. i++ во всех отношениях действительно понятнее, чем i:=i+1, а x=17+29 читается лучше, нежели (setq(x(+17, 29)). Речь идет не о строении компьютерного языка, а скорее о нашем собственном строении. Все уродства С++ — это в основном наши уродства. Когда вы научитесь понимать и любить его странности, когда перестанете беспокоиться о математической стройности, будет сделан ваш первый шаг к достижению элегантности в С++.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Ревнители частоты языка часто нападают на С++. Они полагают, что высшее достижение современной цивилизации — язык, построенный исключительно из атомов и скобок. По мнению этих террористов от синтаксиса, если простую переменную с первого взгляда невозможно отличить от вызова функции или макроса — это вообще не язык, а шарлатанство для развлечения праздной толпы. К сожалению, теория расходится с практикой. В реальной жизни толпа платит лишь за то, чтобы видеть языки, в которых разные идеи выглядят по-разному.
Если бы всегда решала толпа, то Земля бы до сих пор оставалась на трех китах!
ЗХ>«Простые и последовательные» языки никогда не пользовались особым успехом за стенками академий, а языки с блочной структурой овладели массами. Стоит ли этому удивляться? Ведь компьютерные языки приходится изучать и запоминать, а для этого используется то же серое вещество, с помощью которого мы изучаем и запоминаем естественные языки.
Языки программирования приходится прежде всего читать. А для этого нужны именно простые и последовательные.
ЗХ>Попробуйте-ка назвать хотя бы один естественный язык без существительных, глаголов и скобок! Я бы не рискнул. Все наши познания в лингвистике говорят о том, что эти «плохие» особенности только ускоряют изучение компьютерного языка и делают его более понятным. i++ во всех отношениях действительно понятнее, чем i:=i+1,
Уверен? А если i — это указатель на структуру? Так уж прям и понятно, что при этом произойдет!
ЗХ>а x=17+29 читается лучше, нежели (setq(x(+17, 29)). Речь идет не о строении компьютерного языка, а скорее о нашем собственном строении. Все уродства С++ — это в основном наши уродства. Когда вы научитесь понимать и любить его странности, когда перестанете беспокоиться о математической стройности, будет сделан ваш первый шаг к достижению элегантности в С++.
...когда перестанете заботиться о читабельности, надежности и простоте ваших программ, вот тогда вы сможете сказать, что дейстивтельно изучили С++.
Здравствуйте, Kh_Oleg, Вы писали:
ЗХ>>Попробуйте-ка назвать хотя бы один естественный язык без существительных, глаголов и скобок! Я бы не рискнул. Все наши познания в лингвистике говорят о том, что эти «плохие» особенности только ускоряют изучение компьютерного языка и делают его более понятным. i++ во всех отношениях действительно понятнее, чем i:=i+1,
K_O>Уверен? А если i — это указатель на структуру? Так уж прям и понятно, что при этом произойдет!
Ну тогда вообще надо предать анафеме идею полиморфизма.
Ато привыкли, понимаешь, символ + и для сложения int и double ипользовать.
Некоторые извращенцы перегружают + для строк и пытаются
таким образом конкатенировать строки
Здравствуйте, bkat, Вы писали:
B>Здравствуйте, Kh_Oleg, Вы писали:
ЗХ>>>Попробуйте-ка назвать хотя бы один естественный язык без существительных, глаголов и скобок! Я бы не рискнул. Все наши познания в лингвистике говорят о том, что эти «плохие» особенности только ускоряют изучение компьютерного языка и делают его более понятным. i++ во всех отношениях действительно понятнее, чем i:=i+1,
K_O>>Уверен? А если i — это указатель на структуру? Так уж прям и понятно, что при этом произойдет!
B>Ну тогда вообще надо предать анафеме идею полиморфизма. B>Ато привыкли, понимаешь, символ + и для сложения int и double ипользовать. B>Некоторые извращенцы перегружают + для строк и пытаются B>таким образом конкатенировать строки
Не надо впадать в крайности. "+" — это символ сложения. В повседеневной жизни мы обычно складываем числа.
А вот "++" — это операция инкремента. Еще нужно объяснять, что это за операция такая, и что для чисел она означает увеличение на единицу. Ну а перегрузка операторов — это вообще из серии "некоторое действие, которое выглядит как сложение, но делает то, что знаю только я!"
K_O>И здесь компилятор С++ заведомо проигрывает именно из-за невероятной сложности самого языка. И проще его сделать нельзя — стандрат однако!
Господа, вы как-то незаметно переместились с С на С++. Компилятор мог пропустить ошибку на С — как раз из-за его простоты. А С++ — да, сложный язык, но как раз благодаря этому его защищенность намногу выше, чем у Паскаля, что меня иногда даже раздражает. Особенно в этом преуспела STL — ее разработчики прямо-таки помешались на "безопасности". (слово-то какое — сразу вспоминаешь борьбу с терроризмом)
Так что давайте отделим мух от котлет и не будем путать С и С++ (а то, что у них одинаково пишется оператор сравнения вряд ли может быть причиной взрыва ракеты)
LVV> Я вижу в своем воображении образцовый учебник в качестве подходящего исходного пункта. Он должен удовлетворять следующим критериям:
LVV>Начинаться сжатым введением в основные понятия программного проектирования. LVV>Использовать лаконичную формальную нотацию, строго определенную не более чем на примерно 20 страницах.
<...>
Глупости. Это был бы худший учебник, какой только можно придумать. Он был бы понятен только тому, кто уже знает язык.
Практика же показывает, что лучший учебник — это Керниган-Ритчи, который безо всяких формальных нотаций с первой же страницы предлагает писать простую программу.
A>кроме того, излишнее погружение в формальную сторону программирования (нотации и т.п.) — это тоже излишество, т.к. эта штука способна напугать многих школьников, которым интересно писать программы, но не интересно читать
Здравствуйте, LaptevVV, Вы писали:
LVV>Да, еще в 70-е годы все учебники про технологии программирования обошла знаменитая ошибка в программе на фортране, из-за которой тоже взорвалась ракета, стартовавшая с мыса Кеннеди. В Фортране можно было писать идентификаторы с пробелами (!!!!). Это приводило к таким супер-ляпам:
LVV>
LVV>do i=1,100 // это оператор цикла
LVV>do i=1.100 // это - оператор присваивания
LVV>
LVV>Оба — правильные операторы на фортране.
Ну, вообще говоря, на том фортране (70-х годов) первое не было оператором цикла. Надо было написать что-нибудь типа
do 10 i=1,100
где 10 — метка последнего оператора цикла.
Но сути сообщения это, конечно, не меняет .
Здравствуйте, SWW, Вы писали:
LVV>> Я вижу в своем воображении образцовый учебник в качестве подходящего исходного пункта. Он должен удовлетворять следующим критериям:
LVV>>Начинаться сжатым введением в основные понятия программного проектирования. LVV>>Использовать лаконичную формальную нотацию, строго определенную не более чем на примерно 20 страницах. SWW><...>
SWW>Глупости. Это был бы худший учебник, какой только можно придумать. Он был бы понятен только тому, кто уже знает язык. SWW>Практика же показывает, что лучший учебник — это Керниган-Ритчи, который безо всяких формальных нотаций с первой же страницы предлагает писать простую программу.
Только обучение по такому учебнику сродни обучению игры на фортепиано двумя пальцами — быстрый прогресс вначале и ступор при попытке сыграть что-либо серьезное.
LVV>и принуждая всех писать x = = y вместо обычного x = y.
LVV>Класссс!!!!!
Я конечно все понимаю, но докапаться до == и = не достойно серьезного человека. Ссылка твоя не работат, ты хоть бы назвал бы имя товарища, я в будущем относился к его словам с осторожностью.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Вообще-то в посте Лаптева о кривости С в области нарушений правил безпастного программирования говорилось, а ты в качестве (видимо) контр-примера привел раезд на функциональные языки. Получается разговор глухого со слепым.
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
K_O>Взрыв 4 июня 1996 г. ракеты Ариан-5, стоившей пол-миллиарда долларов, имел причиной программную ошибку, которую компилятор Оберона/Компонентного Паскаля просто не пропустил бы.
А вот интересно как можно определить от чего взарвалась ракета если ее бортовой компьютер был уничтожен взрывом?
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Kh_Oleg, Вы писали:
K_O>>
K_O>>Взрыв 4 июня 1996 г. ракеты Ариан-5, стоившей пол-миллиарда долларов, имел причиной программную ошибку, которую компилятор Оберона/Компонентного Паскаля просто не пропустил бы.
VD>А вот интересно как можно определить от чего взарвалась ракета если ее бортовой компьютер был уничтожен взрывом?
Обычно, все "логи" дублируются на Землю через телеметрию
Здравствуйте, AVM, Вы писали:
AVM>Обычно, все "логи" дублируются на Землю через телеметрию
И как ты себе видишь логирование действий процессора? Это ж каую нужно информацию передавать и чем?
ЗЫ
В сообщении раядом есть ссылка на теру где сказано, что они сделали эмуляцию полета на компьютере. Т.е. по русски говоря написали полноценные тесты, тольк сделали они это после попытки ввода в эксплуатацию. А в их деле если с первого раза спутник не запустился, значит спутниковый спорт не для них...
... << RSDN@Home 1.1.3 beta 2 >>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Kh_Oleg, Вы писали:
K_O>Ну а перегрузка операторов — это вообще из серии "некоторое действие, которое выглядит как сложение, но делает то, что знаю только я!"
Во-во!!! В этом смысле i=i+1 ничуть не лучше и не хуже, чем i++. Это уже проблема семантики, но корень ее — в слишком фривольном синтаксисе. Без базару, C++ — очень красивый и очень выразительный язык, но какова цена! Перегрузка операторов — это частный случай запредельной фривольности C/C++ в части преобразований типов и арифметики. Если, скажем, запретить в C++ для обхода массивов пользоваться чем бы то ни было, кроме STL-итераторов, а в самих итераторах заменить operator++() на next(), читабельность кода только улучшится.
Пусть бросит в меня камень тот, кто ни разу не ошибался с диапазонами массивов и величинами инкремента указателей, забыв про тип этих указателей. И кто ни разу не копался в исходниках, написанных другим (квалифицированным, ответственным) программистом. Это свобода на грани анархии. Вспоминаю свои ощущения в процессе изучения Java после нескольких лет юзанья C++: просто счастье, что есть автоматические финалайзеры, есть сборщик мусора, зато нет перегрузки операторов и нет множественного наследования. Все просто, строго и красиво, программеры с шаловливыми руками — руки за спину!