Комментарии 55
университеты не должны производить программистов, для того они высшие учебные заведения. программистов пускай штампуют колледжи. примерно так выглядит сейчас в германии, и мне это нравится.
Страуструп, насколько я могу судить, не различает в статье университеты и колледжи. Но в штатах и те и другие являются высшими учебными заведениями, а если под колледжом понимается что-то в духе ПТУ, то ваше высказывание — как раз то, против чего статья активно возражает, и причём с аргументацией.
да, я имею в виду пту или в духе. хотя конкретного представления, что есть пту не имею. но всё таки считаю, что абитуриенты (в первичном значении, то есть люди покидающие среднее учебное заведение, к примеру гимназию или подобное) вполне могут пойти в профессиональное училище и там познать профессию программиста.
ну и насчёт первой мысли, так каковых аргументов я не нашёл, всего лишь короткое, не обоснованное мнение автора, что якобы профессиональное образование порочно. спешу не согласиться с этим, малоквалифицированными, неподкованными и оторванными от мира выглядят именно студенты, изучающие информатику (а не программирование), которым приходится справляться с обязанностями программистов.
ну и насчёт первой мысли, так каковых аргументов я не нашёл, всего лишь короткое, не обоснованное мнение автора, что якобы профессиональное образование порочно. спешу не согласиться с этим, малоквалифицированными, неподкованными и оторванными от мира выглядят именно студенты, изучающие информатику (а не программирование), которым приходится справляться с обязанностями программистов.
вполне могут пойти в профессиональное училище и там познать профессию программиста.
Правда ли что «программист» в вашем понимании — это обезьянка-кодер, который умеет нарисовать окошко в GUI builder'е и соединить его с БД? Конечно же с такими справится ПТУ, и дай мне бог никогда не пересекаться ни с ними ни с их продуктами (например в паспортной службе или в бухгалтерии). Страуструп конечно же неправ в том, что игнорирует наличие и потребность в таковых людях. Но представьте что мы рассматриваем нормальное ПО, для разработки которого всё ж таки нужно знать, хотя что такое O(N). Тут не обойтись без выпускников ВУЗов и тут-то Страуструп прав, и вы возможно тоже — эти выпускники не умеют программировать, несмотря на все красные дипломы. Только это не имеет никакого отношения к тому программированию, которому научат в ПТУ. И следовательно, создавать вот такое вот ПО некому, о чём собсно и речь.
Кстати, Страуструп ни разу не утверждает порочность профессионального образования. Наоборот, в конц статьи он утверждает что профессиональный программист должен иметь какое-никакое образование в той области, для которой он пишет программы.
Автор одного из самых запутанных языков программирования пишет о том, что системы стали слишком запутанными :)
Ха!
Ха!
Осмелюсь выразить своё мнение о том, что C++ абсолютно не запутанный, а напротив — весьма последовательный и логичный. Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
Не могу согласиться. Чего особенного он дает-то?
Безграничные возможности дает и C, язык простой и логичный. Те же горизонты открывает и DigitalMars D, при этом оставаясь очень аккуратным. Кстати, сам Страуструп сейчас агитирует за D.
Чего в нем такого из возможностей, что не найти в альтернативах?
Безграничные возможности дает и C, язык простой и логичный. Те же горизонты открывает и DigitalMars D, при этом оставаясь очень аккуратным. Кстати, сам Страуструп сейчас агитирует за D.
Чего в нем такого из возможностей, что не найти в альтернативах?
Язык C может и даёт безграничные возможности, но к сожалению возможности программистов, его использующих, не безграничны: в больших проектах C себя не оправдывает в силу процедурного подхода (в противовес объектно-ориентированному в C++).
D? Ммм, возможно… Хороший язык, но как-то не прижился (пока что?). У меня, правда, к нему личная неприязнь, хоть и абсолютно беспричинная (по-видимому, сказывается C++-фанатизм) =)
Впрочем, я знаю, почему я не стал учить D. На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей (учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет). Вероятно, не один я столкнулся с подобной дилеммой, но каждый разрешил её по-своему.
D? Ммм, возможно… Хороший язык, но как-то не прижился (пока что?). У меня, правда, к нему личная неприязнь, хоть и абсолютно беспричинная (по-видимому, сказывается C++-фанатизм) =)
Впрочем, я знаю, почему я не стал учить D. На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей (учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет). Вероятно, не один я столкнулся с подобной дилеммой, но каждый разрешил её по-своему.
>в больших проектах C себя не оправдывает в силу процедурного подхода (в противовес объектно-ориентированному в C++).
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Это сильно сказывается на разработке и поддержке больших систем.
>На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей
D 1.0 очень простой, и документация у него толковая. Учится не в пример легче Си++.
>учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет
Это такой аргумент против получения новых знаний? Очень грустно.
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Это сильно сказывается на разработке и поддержке больших систем.
>На тот момент, когда я о нём узнал, у меня были уже достаточно неплохие познания в C++, а начинать заново изучение нюансов очередного языка мне показалось не слишком разумной идеей
D 1.0 очень простой, и документация у него толковая. Учится не в пример легче Си++.
>учитывая тот факт, что востребованность D-программистов на рынке труда также не слишком впечатляет
Это такой аргумент против получения новых знаний? Очень грустно.
Это такой аргумент против получения новых знаний? Очень грустно.
Знания должны быть применимы, а не просто «пылиться на полочке»…
А вы не думали о том, что изучение того же D может привести к каким-то новым, полезным, идеям и инсайтам, к профессиональному и личностному росту? Плюсующие, видимо, тоже об этом не думали.
Си не оправдывает себя вовсе не потому, что он императивный, а потому, что предоставляет слабенькие средства создания и комбинирования абстракций.
Каюсь, в данном случае у меня одно ассоциируется с другим. Огрехи обучения…
зря каетесь) императивная парадигма включает в себя и си, и плюсы, и яву и многое другое (вы про парадигму не писали вообще). А комбинирование абстракций это как раз и есть перефразированное и обобщенное ваше предложение об ООП и процедурном программировании.
Простите, а какие именно большие проекты нельзя писать в императивном стиле? ОС? Сервера? Библиотеки, может, какие-нибудь?
Я абсолютно не согласен с этим утверждением. И согласен с Торвальдсом по поводу С++, но цитировать неприличны слова не буду.
Я абсолютно не согласен с этим утверждением. И согласен с Торвальдсом по поводу С++, но цитировать неприличны слова не буду.
А я разве говорил, что нельзя? Знаете выражение: «если нельзя, но очень хочется, то можно»? Вопрос в удобстве. И, к примеру, то же ядро Linux — явно не самый интуитивно понятный проектик ;)
А вы назовите проект в миллионы строк, который сохраняет интуитивность :)
В мирах Юникса крупнейшие проекты как писались на Си тридцать лет, так и пишутся до сих пор. Удел С++ — средние и большие. И то… Apache, GTK+, Гномячьи прилады, git — это все Си.
В Винде вообще набирает популярность С#. Почему? Воли у народу уже не хватает писать на плюсах.
В мирах Юникса крупнейшие проекты как писались на Си тридцать лет, так и пишутся до сих пор. Удел С++ — средние и большие. И то… Apache, GTK+, Гномячьи прилады, git — это все Си.
В Винде вообще набирает популярность С#. Почему? Воли у народу уже не хватает писать на плюсах.
Qt. Почти 18 миллионов строк. Сохраняет интуитивность.
Гм, согласен, красота редкая.
А вы видели их код изнутри? :)
А вы видели их код изнутри? :)
я видел. Регулярно читаю. Вполне интуитивен и понятен. Четкая структура. Следование стилю
Мне тоже доводилось. Там довольно много хитрых способов с макрорасширениями языка; кстати, именно с такими штуками на С++ бывают проблемы при анализе.
Строго говоря, Qt — редкий вообще для всех языков фреймворк. Документация, логичность… Шик. Мне интересно было бы посмотреть первые версии инструментария.
Неужели с самого начала пара программистов практически сразу после универа могли такую роскошь сделать?
Тем не менее. Это ведь скорее исключение, нежели правило.
Строго говоря, Qt — редкий вообще для всех языков фреймворк. Документация, логичность… Шик. Мне интересно было бы посмотреть первые версии инструментария.
Неужели с самого начала пара программистов практически сразу после универа могли такую роскошь сделать?
Тем не менее. Это ведь скорее исключение, нежели правило.
Мне тоже неоднократно приходилось смотреть исходники.
И да, Qt 3 тоже была весьма недурна собой.
И да, Qt 3 тоже была весьма недурна собой.
сам Страуструп сейчас агитирует за D
Кстати, не отказался бы об этом где-то почитать ;) Реквестирую линк.
Проверил.
Каюсь, перепутал. Это Александреску даже книгу написал. Впрочем, перепутал не со студентом. Авторитет у него тоже серьезный — лучше него темные уголки С++ мало кто знает.
Да ну его, это С++. Стандарт за стандартом они вливают нагромождение фишек, усложняют и усложняют… Бр. Отмороженная фигня.
Каюсь, перепутал. Это Александреску даже книгу написал. Впрочем, перепутал не со студентом. Авторитет у него тоже серьезный — лучше него темные уголки С++ мало кто знает.
Да ну его, это С++. Стандарт за стандартом они вливают нагромождение фишек, усложняют и усложняют… Бр. Отмороженная фигня.
Ну, это общеизвестный факт, что Александреску является основным популяризатором языка D.
А по поводу нагромождения фишек — это удел любого широко используемого языка или технологии. Рано или поздно он(а) разрастается до неузнаваемых размеров. Посмотрите вон на C# хотя бы…
А по поводу нагромождения фишек — это удел любого широко используемого языка или технологии. Рано или поздно он(а) разрастается до неузнаваемых размеров. Посмотрите вон на C# хотя бы…
а я могу кивнуть на Питон… :) Там небольшое и очень логичное ядро, возможности раскрываются по большей части в стандартной библиотеке. Используется достаточно широко и возраст уже нормальный.
Да и классический Си пока вполне адекватен.
Вот вы скажите… Если С++ — такой логичный, то где, блин, хотя бы однозначный стандарт или определение грамматики языка? Парсер практически невозможно сделать, это требует невероятных многолетних усилий, даже гламурная Студия не вполне с этим справляется.
Как был с самого начала лозунг «пихаем все что в голову придет», так и остался до сих пор. И мне страшно думать о том, что же они внедрят со следующе версией языка… Усложнят опять? Надмножество очережное? Еще два тома руководств и разъяснений?
Да и классический Си пока вполне адекватен.
Вот вы скажите… Если С++ — такой логичный, то где, блин, хотя бы однозначный стандарт или определение грамматики языка? Парсер практически невозможно сделать, это требует невероятных многолетних усилий, даже гламурная Студия не вполне с этим справляется.
Как был с самого начала лозунг «пихаем все что в голову придет», так и остался до сих пор. И мне страшно думать о том, что же они внедрят со следующе версией языка… Усложнят опять? Надмножество очережное? Еще два тома руководств и разъяснений?
Извините, но Python — боец другой весовой категории. А в C++ тоже стандартная библиотека играет не последнюю роль.
Да и в чём проблема со стандартом-то и парсером для него? Однозначный стандарт вполне. Это ж Вам не Malbolge…
Да и в чём проблема со стандартом-то и парсером для него? Однозначный стандарт вполне. Это ж Вам не Malbolge…
Да не совсем, насколько помню, стандарт все же сложный и во многих местах решение остается на усмотрение разработчиков компилятора.
Собственно, чего я это вспомнил. Слежу постоянно за разработкой cedet — это комплект инструментов для анализа кода и фишечек вроде intellisense в Емаксе. Вот как раз там и обсуждаются периодически неявные моменты и проблемы, и их действительно много.
Собственно, чего я это вспомнил. Слежу постоянно за разработкой cedet — это комплект инструментов для анализа кода и фишечек вроде intellisense в Емаксе. Вот как раз там и обсуждаются периодически неявные моменты и проблемы, и их действительно много.
НЛО прилетело и опубликовало эту надпись здесь
Невежество невежеством, а даже то, что имеется — та еще каша. Какая разница, сколько именно лет они принимают расширенную версию этого дела, если легче от этого не станет в любом случае?
Может, по темноте своей природной чего не знаю или C++xx вдруг что-то упорядочит в языке?
Может, по темноте своей природной чего не знаю или C++xx вдруг что-то упорядочит в языке?
НЛО прилетело и опубликовало эту надпись здесь
Что упорядочить? Честно говоря, не знаю. И мало кто знает, подозреваю. Поздно пить боржоми, как говорится… Масса старого кода, обратная совместимость, бла-бла-бла.
Тогда новый язык получится. Тот же D.
Или вам нужно что-то конкретное указать, что мне так не нравится? Могу взять Страуструпа и пройтись попунктно по главам.
Тогда новый язык получится. Тот же D.
Или вам нужно что-то конкретное указать, что мне так не нравится? Могу взять Страуструпа и пройтись попунктно по главам.
>C++ абсолютно не запутанный, а напротив — весьма последовательный и логичный
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.
>Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.
>Другое дело, что в нём достаточно много важных «мелочей», но это плата за практически безграничные возможности, которые данный язык предоставляет программисту.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
Если бы у Си++ была формальная семантика, тогда и можно было бы говорить о *объективной* последовательности и логичности. А покуда ее нет — эти критерии субъективны.
Да я вроде как нигде и не утверждал, что моё личное мнение всецело претендует на объективность.
О каких «безграничные возможностях» вы говорите? Он что, вычисляет больше, чем машина Тьюринга? :)
Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен. Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
> Да я вроде как нигде и не утверждал, что моё личное мнение всецело претендует на объективность.
Я специально сделал на этом акцент, чтобы отсечь все разговоры о якобы простоте и логичности Си++.
>Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен.
Это не сарказм. Улыбнуло просто :)
>Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Вот так бы сразу и сказали.
>Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
Можно. Надо только костылями подходящего размера запастись. :)
Вот, кстати, пейпер по теме:
domino.watson.ibm.com/comm/research_people.nsf/pages/dgrove.vee09.html
Я специально сделал на этом акцент, чтобы отсечь все разговоры о якобы простоте и логичности Си++.
>Я считаю, Ваш сарказм по поводу машины Тьюринга здесь неуместен.
Это не сарказм. Улыбнуло просто :)
>Под «безграничными возможностями» я подразумевал возможность работы в этом языке как на низком уровне, так и на высоком, поддержку нескольких парадигм программирования и т.д.
Вот так бы сразу и сказали.
>Взять ту же Java (которая также тьюринг-полная) — про неё можно сказать то же самое?
Можно. Надо только костылями подходящего размера запастись. :)
Вот, кстати, пейпер по теме:
domino.watson.ibm.com/comm/research_people.nsf/pages/dgrove.vee09.html
Я бы присоединился скорее к мнению о том, что C++ не запутанный, но это скорее из за того, что я его не достаточно знаю.
Про машину Тьюринга: алгоритмическая полнота это лишь один из факторов, вы забываете о возможностях ядра процессора, которые в машине Тьюринга не использовались.
[ASM]->[C]->[C++]->[C#] Поправте меня, но я считаю это эволюцией абстрагирования. Что вы знаете о больших проектах? Ядро линукс… Вы его сами делали?
На самом деле в университетах нас постоянно тыкают в эти «большие проекты», но что же это такое? Повторное использование кода — вот в чем сила эволюции абстрагирования, это как собирать компьютер, из песка->из транзисторов->на ИС->на БИС->на микрочипах->или из готовых комплектующих. Всё это системный анализ. Используется не только в программировании.
Про машину Тьюринга: алгоритмическая полнота это лишь один из факторов, вы забываете о возможностях ядра процессора, которые в машине Тьюринга не использовались.
[ASM]->[C]->[C++]->[C#] Поправте меня, но я считаю это эволюцией абстрагирования. Что вы знаете о больших проектах? Ядро линукс… Вы его сами делали?
На самом деле в университетах нас постоянно тыкают в эти «большие проекты», но что же это такое? Повторное использование кода — вот в чем сила эволюции абстрагирования, это как собирать компьютер, из песка->из транзисторов->на ИС->на БИС->на микрочипах->или из готовых комплектующих. Всё это системный анализ. Используется не только в программировании.
сишарп зря приплели. Не всегда нужен сборщик мусора, иногда гораздо проще без него (я не говорю про низкоуровневые задачи, там понятно. Я имею в виду в том числе и обычные настольные приложения).
уберите из списка Шарп… Или давайте тогда уж Яву. Она и раньше, и нишу свою плотнее скушала.
надо было не указывать автора статьи. я бы узнал Страуструпа — много текста, вроде все по делу, а вроде и в двух предложениях всё поместилось бы. не изменяет стилю со времен книг по С++ (:
«медецинской инженерии» — исправьте, пожалуйста
Спасибо за статью, но есть замечание к переводу.
которые, тем не менее, на занятиях по операционным системам быдлокодят с абсолютным пренебрежением
Грубовато для доктора философии :) Можно просто написать «программируют», т.к. имхо «быдлокодят» == «программируют с абсолютным пренебрежением».
которые, тем не менее, на занятиях по операционным системам быдлокодят с абсолютным пренебрежением
Грубовато для доктора философии :) Можно просто написать «программируют», т.к. имхо «быдлокодят» == «программируют с абсолютным пренебрежением».
Согласен, тоже порезало глаза, когда читал. Интересно посмотреть на это предложение в оригинале (лень искать).
В оринигале было «who nevertheless hack solutions in an operating systems class with total disregard»
Ну я предупреждал что перевод несколько художественный. Слово «программировать» в таком контексте мне кажется мягковатым, да и Страуструпу вроде бы тоже (ибо hack, а не develop или program). Слово «хакать» ничуть не лучше с точки зрения языка, чем «быдлокодить», зато последнее точно не имеет других оттенков (типа «взламывать» или «долго копаться в кишках программы и библиотеки с целью заставить таки работать одну фишку под одним специфичным браузером»)
Ну я предупреждал что перевод несколько художественный. Слово «программировать» в таком контексте мне кажется мягковатым, да и Страуструпу вроде бы тоже (ибо hack, а не develop или program). Слово «хакать» ничуть не лучше с точки зрения языка, чем «быдлокодить», зато последнее точно не имеет других оттенков (типа «взламывать» или «долго копаться в кишках программы и библиотеки с целью заставить таки работать одну фишку под одним специфичным браузером»)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Перевод статьи Бьярна Страуструпа «What should we teach new software developers? Why?»