Такой вещи, как идеальный текст, не существует. Как не существует идеального отчаяния.
Харуки Мураками, «Слушай песню ветра»
Что такое хороший язык программирования и каким он должен быть? Всякое люди говорят – тут тебе и дуракоустойчивость (прошу прощение, «защита от новичка»), и Тьюринг-полнота, и формализуемость, и еще 1024 критерия. Ерунда. Все нижеследующее просьба рассматривать как эссе в вольном стиле, а не научную статью.
Бывают языки красивые, бывают строгие, бывают такие, которым легко обучиться, бывают такие, на которых легко писать. Их не используют.
Бывают такие, в которых черт ногу сломит – и на них пишет полмира(сноска: Программистского мира, естественно, раз уж мы о языках программирования.), но никто не любит.
Бывают языки сложные и неочевидные: чтобы писать на них хорошие программы, нужно учиться несколько лет и прочесть кучу книг. В них влюбляются, им посвящают стихи, о них спорят до хрипоты, визга и метания в собеседника банановой кожуры.
***
Я – программист. Я знаю пять языков – и верен одному. Я прочел два десятка книг только об этом языке – а хотел бы две сотни. Я могу математически доказать правильность своей программы – и скрещиваю пальцы на удачу, когда запускаю ее на компиляцию. Я могу переписать одну строку восьмью разными способами – но работает только девятый. Я безнадежен.
***
Один мой коллега (и все профессора в моем институте) верят, что главное – это научиться программированию. Мол, человек, умеющий программировать вообще, за пару недель освоит новый язык и будет писать на нем великолепные программы. Поэтому в университетских курсах огромное количество сухой(сноска: Ну, черт с ней, полусухой.) теории, а языки преподаются на уровне пресловутого «Хелло Ворлд». Но это все равно, что научить стихосложению вообще – а потом студент за пару недель осваивает финский или хинди и выдает первоклассные стихи, входит в историю поэзии и энциклопедический словарь. Вроде абсурд получился.
Каждый язык программирования – из тех, в которые влюбляются – порождает свою культуру. Совершенно так же, как человеческий язык. У него есть свой букварь(сноска: Кафедра Программного обеспечения, курс «Язык С++», 48 часов. (с) расписание 2-го курса.). Но это – только самое-самое начало. Есть лексика – и даже нецензурная(сноска: Скажите любому опытному С++-программисту магическое слово goto. Только с безопасного расстояния.) (как и в естественном языке, иногда она бывает к месту). Есть синтаксис. Это все вещи понятные, относительно легко изучаемые и относительно легко формализуемые. Именно поэтому можно автоматизировать проверку синтаксической и лексической правильности как программы, так и данной статьи.
Но и это все – лишь начало. Ни «Война и мир», ни «безбашенная» проза Харуки Мураками, ни «Linux» – не являются математически стройными системами. Их нельзя назвать написанными «правильно» или «неправильно». Более того, и то, и другое, и третье можно было написать несчетным(сноска: В математическом, а не поэтическом значении этого слова.) количеством различных способов – но написаны (и ценны) они именно такими.
Нельзя «научить» писать эпиграммы, сказки или статьи, которые нравятся редакторам «Компьютерры». Каждое такое произведение – это результат творческого переосмысления опыта предыдущих поколений + немножко вдохновения + владение языком + собственный стиль. Нельзя научить писать программы на C++ – это результат [см. выше].
***
У этого языка есть свои идиомы – краткие, но очень емкие конструкции. Есть традиции – и возможность плевать на них. Есть свобода выбора стиля. Есть возможность различными словами написать одну и ту же фразу. Есть классика – и есть классики: Бьярн Страуструп, Джефф Элджер, Герб Саттер, Николай Джосаттис. На этом языке можно сказать двусмысленность – и не получить линейкой по рукам от компилятора(сноска: …а трое суток искать, почему программа вылетает, когда i=17.). Здесь есть место творчеству – здесь есть место спорам – здесь есть место 48-часовым марафонам по отладке программ. Есть тонкости, доступные только снобам. Здесь нет только одного – места, где можно было бы остановиться и сказать: все, ничего нового для меня в этом мире не осталось.
***
Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
***
Поймите меня правильно еще раз. С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код(сноска: Кстати, это уже шаг в сторону автоматической генерации программ или «Цель деятельности всех программистов – чтобы их деятельность стала не нужна».). Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка.
Язык, который никто и никогда не будет любить.
***
Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
11.06.04 18:06: Перенесено модератором из 'C/C++'. TK (42) в Философия программирования Kubera (4) в Философия программирования Twirl (0) оставить как есть — Павел Кузнецов
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Я – программист. Я знаю пять языков – и верен одному. Я прочел два десятка книг только об этом языке – а хотел бы две сотни. Я могу математически доказать правильность своей программы – и скрещиваю пальцы на удачу, когда запускаю ее на компиляцию. Я могу переписать одну строку восьмью разными способами – но работает только девятый. Я безнадежен.
А ты не задувмывался над тем, почему тебе 20 книг не хватает, а не проблема ли тут в самом языке. Действительно по С++ можно написать кол-во книг стремящихся к бесконечности.
ЗХ>*** ЗХ>Один мой коллега (и все профессора в моем институте) верят, что главное – это научиться программированию. Мол, человек, умеющий программировать вообще, за пару недель освоит новый язык и будет писать на нем великолепные программы. Поэтому в университетских курсах огромное количество сухой(сноска: Ну, черт с ней, полусухой.) теории, а языки преподаются на уровне пресловутого «Хелло Ворлд». Но это все равно, что научить стихосложению вообще – а потом студент за пару недель осваивает финский или хинди и выдает первоклассные стихи, входит в историю поэзии и энциклопедический словарь. Вроде абсурд получился.
Действительно, человек, знающий ооочень хорошо архитектуру ПК, ООП, и представляет как работает ОС, сможет достаточно быстро разобраться в языке программирования. Меньше всего это относиться к С++, потому что вот так все запущенно. Но всеже, если знаешь С++, то писать на жабе не составит труда уже через 1 месяц. ЗХ>Каждый язык программирования – из тех, в которые влюбляются – порождает свою культуру. Совершенно так же, как человеческий язык. У него есть свой букварь(сноска: Кафедра Программного обеспечения, курс «Язык С++», 48 часов. (с) расписание 2-го курса.). Но это – только самое-самое начало. Есть лексика – и даже нецензурная(сноска: Скажите любому опытному С++-программисту магическое слово goto. Только с безопасного расстояния.) (как и в естественном языке, иногда она бывает к месту). Есть синтаксис. Это все вещи понятные, относительно легко изучаемые и относительно легко формализуемые. Именно поэтому можно автоматизировать проверку синтаксической и лексической правильности как программы, так и данной статьи.
Культуру пораждает все старое и в свое время очень популярное, например битлс. Это не говорит о том что он будет таким популярным как и прежде. ЗХ>Но и это все – лишь начало. Ни «Война и мир», ни «безбашенная» проза Харуки Мураками, ни «Linux» – не являются математически стройными системами. Их нельзя назвать написанными «правильно» или «неправильно». Более того, и то, и другое, и третье можно было написать несчетным(сноска: В математическом, а не поэтическом значении этого слова.) количеством различных способов – но написаны (и ценны) они именно такими.
Говоришь как специалист по ОС, и плиз расшифруй понятие матиматически сторойная ОС, а уж тем более Война и мир. ЗХ>Нельзя «научить» писать эпиграммы, сказки или статьи, которые нравятся редакторам «Компьютерры». Каждое такое произведение – это результат творческого переосмысления опыта предыдущих поколений + немножко вдохновения + владение языком + собственный стиль. Нельзя научить писать программы на C++ – это результат [см. выше]. ЗХ>*** ЗХ>У этого языка есть свои идиомы – краткие, но очень емкие конструкции. Есть традиции – и возможность плевать на них. Есть свобода выбора стиля. Есть возможность различными словами написать одну и ту же фразу. Есть классика – и есть классики: Бьярн Страуструп, Джефф Элджер, Герб Саттер, Николай Джосаттис. На этом языке можно сказать двусмысленность – и не получить линейкой по рукам от компилятора(сноска: …а трое суток искать, почему программа вылетает, когда i=17.). Здесь есть место творчеству – здесь есть место спорам – здесь есть место 48-часовым марафонам по отладке программ. Есть тонкости, доступные только снобам. Здесь нет только одного – места, где можно было бы остановиться и сказать: все, ничего нового для меня в этом мире не осталось.
Все это относиться и к АСМу. А вот тут ты явно не прав: На этом языке можно сказать двусмысленность – и не получить линейкой по рукам от компилятора. Для этого есть стандарт, или другое развитие событий: компилятор глючит, а это везде может быть. ЗХ>*** ЗХ>Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
Действительно пользователю плевать на язык, но у него есть свои предрассудки: красиво, без тормазов, плюс много всего. Но для реализации этого программисту не плевать на чем писать. ЗХ>*** ЗХ>Поймите меня правильно еще раз. С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код(сноска: Кстати, это уже шаг в сторону автоматической генерации программ или «Цель деятельности всех программистов – чтобы их деятельность стала не нужна».). Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка. ЗХ>Язык, который никто и никогда не будет любить. ЗХ>*** ЗХ>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
Всех нас ждет платформа НЕТ, а там уж сам выбирай(я уж точно на С++|CLI не перейду). Так что или писать под математически не стройные системы типа линукс, либо Windows+C#.
> ***
> Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
С выделенным можно не согласиться.
(Conway's Law) В 1968г. Mel Conway постулировал, что структура любой информационной систеы изоморфна структуре организации построившей эту систему. Одним из замечательных следствий этого законо является то, что продукт всегда выражает ценности, интересы, таланты и цели создателей продукта и нет способа этого избежать.
Здравствуйте, MaximE, Вы писали:
ME>Зверёк Харьковский wrote:
ME>
>> ***
>> Поймите меня правильно – пользователю, в общем-то, плевать, на каком языке написана программа и насколько освоился в этом языке ее автор. В отличие от написания текстов, в программировании конечный продукт очень слабо связан со стилем и культурой автора текста(сноска: Естественно, связан сильно, но совершенно неочевидно для конечного потребителя.). Тем не менее, программа, которой «еще жить и жить» от версии к версии, просто обязана быть красивой – а не то в следующей версии никто уже не поймет, куда там дописывать новый кусок и почему старый до сих пор работает и «черт побери, кто вообще это писал?!» Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
ME>С выделенным можно не согласиться.
ME>(Conway's Law) В 1968г. Mel Conway постулировал, что структура любой информационной систеы изоморфна структуре организации построившей эту систему. Одним из замечательных следствий этого законо является то, что продукт всегда выражает ценности, интересы, таланты и цели создателей продукта и нет способа этого избежать.
Не стану спорить. Но в скобках замечу, что твое высказывание опровергает одну мою фразу, при этом подтверждая мою правоту в целом.
ы?
С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код
Зверёк Харьковский wrote:
> Не стану спорить. Но в скобках замечу, что твое высказывание опровергает одну мою фразу, при этом подтверждая мою правоту в целом. > ы?
D>Всех нас ждет платформа НЕТ, а там уж сам выбирай(я уж точно на С++|CLI не перейду). Так что или писать под математически не стройные системы типа линукс, либо Windows+C#.
Здравствуйте, _Obelisk_, Вы писали:
_O_>Здравствуйте, Denwer, Вы писали:
D>>Всех нас ждет платформа НЕТ, а там уж сам выбирай(я уж точно на С++|CLI не перейду). Так что или писать под математически не стройные системы типа линукс, либо Windows+C#.
_O_>Не Net-ом единым жив программист.
Здравствуйте, adontz, Вы писали:
A>Здравствуйте, Зверёк Харьковский, Вы писали:
A>Круто! Офигительная пропаганда C#! Особеннно это
A>
A>С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>*** ЗХ>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
Здравствуйте, Denwer, Вы писали:
D>>>Всех нас ждет платформа НЕТ, а там уж сам выбирай(я уж точно на С++|CLI не перейду). Так что или писать под математически не стройные системы типа линукс, либо Windows+C#.
_O_>>Не Net-ом единым жив программист.
D>Вот я и сказал либо linux либо windows+net.
Помимо Linux-а и виндов есть другие ОСы и платформы. Одних embedded систем куча всяких разных.
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, Зверёк Харьковский, Вы писали:
J>все-таки по поводу девяти разных строчек — это скорее про perl
Ха! Девять.. Мелко берёте
Одних только Japh-ов уже не одна сотня
Здравствуйте, e-Xecutor, Вы писали:
EX>Здравствуйте, jazzer, Вы писали:
J>>Здравствуйте, Зверёк Харьковский, Вы писали:
J>>все-таки по поводу девяти разных строчек — это скорее про perl :) EX>Ха! Девять.. Мелко берёте :) EX>Одних только Japh-ов уже не одна сотня :)
Просвети темного, що це таке?
Здравствуйте, _Obelisk_, Вы писали:
_O_>Здравствуйте, Denwer, Вы писали:
D>>>>Всех нас ждет платформа НЕТ, а там уж сам выбирай(я уж точно на С++|CLI не перейду). Так что или писать под математически не стройные системы типа линукс, либо Windows+C#.
_O_>>>Не Net-ом единым жив программист.
D>>Вот я и сказал либо linux либо windows+net.
_O_>Помимо Linux-а и виндов есть другие ОСы и платформы. Одних embedded систем куча всяких разных.
Много конечно, простоя под линуксом подразумевал все оставшееся. Но это очень маленькая часть от всех ОС. А большая то windows. И скоро все бедет сводиться к следующему: либо ты получаешь хорошую ЗП, и всегда есть возможность сменить работу, либо ты становишься реликвией, программируешь на С++, постоянно думаешь на что поесть, и все такое. Вот сам посмотри каково сейчас чистым сишникам живется, с работой всегда напряг(не надо приводить токо единичные случаи ), а что разве все что сейчас пишется нельзя написать на чистом С? Конечно можно, но не рационально. Поэтому и не пишется. Я сам сторонник С++(всеми руками и ногами), но такова реальность.И от этого не уйти. За нас выбор сделан майкрософтом.
Интересный текст, но несколько(сильно) сумбурный.
ЗХ>Бывают языки сложные и неочевидные: чтобы писать на них хорошие программы, нужно учиться несколько лет и прочесть кучу книг. В них влюбляются, им посвящают стихи, о них спорят до хрипоты, визга и метания в собеседника банановой кожуры.
А вот есть такой скромный маленький язык C. О нем не спорят до хрипоты, а чтобы писать на нем хорошие програмы нужно учиться месяц-два, да и книг можно вообще не читать. При этом хорошие програмы на нем пишут уже более тридцати лет. Вот ведь непорядок.
Проблема в том, что на C++(равно как и на других языках) пишут программы и без (n+куча) лет и книг. И даже (n+куча)^2 книг и лет не гарантируют хорошесть програм. А вот нацеленность на написание хороших програм гарантирует это на 80-90% в не зависимости от используемых языковых средств.
ЗХ>Я – программист. Я знаю пять языков – и верен одному. Я прочел два десятка книг только об этом языке – а хотел бы две сотни. Я могу математически доказать правильность своей программы – и скрещиваю пальцы на удачу, когда запускаю ее на компиляцию.
А может стоило прочесть 5 книг о C++ и узнать два десятка языков?
ЗХ> Я могу переписать одну строку восьмью разными способами – но работает только девятый. Я безнадежен.
Это мне напомнило Evolution of a Haskell Programmer из раздела Haskell Humor на haskell.org. Там правда 20+ способов и работают все. Тоже фанатичные люди писали.
ЗХ> Именно поэтому можно автоматизировать проверку синтаксической и лексической правильности как программы, так и данной статьи.
Не все так просто. Статья на русском,а там сложная морфология и прочие безобразия. Потом "синтаксис" ЯП != синтаксис НЯ, это на самом деле грамматика. Грамматика в русском очень серьезно зависит от контекста, т.е. конкретного смысла слов и словосочетаний. В общем на данный момент полностью реализуема только лексическая(орфографическая) проверка.
ЗХ>Поймите меня правильно еще раз. С++, будучи изначально и по определению промышленным языком, является крайне неудачным выбором для промышленного производства. Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. Язык, который подразумевает только один вариант выражения мысли. Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код(сноска: Кстати, это уже шаг в сторону автоматической генерации программ или «Цель деятельности всех программистов – чтобы их деятельность стала не нужна».).
По твоему признанию язык C++ это язык на котором из девяти вариантов только один будет правильным. Следовательно десять штампованных программистов напишут правильный код, а среди десяти программистов C++ восемь напишут абсолютно
неправильный, один напишет штампованный, а последний окажется гением и напишет экстра-террестриальный реюзабельный шаблон обходящий недочеты C++ при помощи заимствованной из языков парадигмы X концепции + 75% макросов + два десятка грязных хаков для того чтобы внедрить идею в жизнь на всех трех-четырех высоко-совместимых со стандартом C++ компиляторов, каждый из которых совместим с ним по другому.
Какова мораль? C++ — плохой промышленный язык? Да нет же, каждый десятый C++ программист — гений.
ЗХ>Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка.
Кстати говорят есть такие языки в которых не только шаг влево/вправо можно выразить, но и прыжок, равно как и свободный полет.
ЗХ>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
Видимо ты все же не гений. Есть же еще десятый вариант.
Здравствуйте, Denwer, Вы писали:
D>Много конечно, простоя под линуксом подразумевал все оставшееся. Но это очень маленькая часть от всех ОС. А большая то windows. И скоро все бедет сводиться к следующему: либо ты получаешь хорошую ЗП, и всегда есть возможность сменить работу, либо ты становишься реликвией, программируешь на С++, постоянно думаешь на что поесть, и все такое. Вот сам посмотри каково сейчас чистым сишникам живется, с работой всегда напряг(не надо приводить токо единичные случаи ), а что разве все что сейчас пишется нельзя написать на чистом С? Конечно можно, но не рационально. Поэтому и не пишется. Я сам сторонник С++(всеми руками и ногами), но такова реальность.И от этого не уйти. За нас выбор сделан майкрософтом.
Linux — это отнюдь не все остальное. Есть куча разных специфических ОС.
Вообще говоря, когда занимаешься созданием языков программирования (или чем-то с этим связанным), то смотреть на все эти споры о том, какой язык круче и что будет, когда его не будет, становится не интересно и скучно.
Нет существенной разницы на чем писать, если знаешь что писать. Особенности и ограничения данного конкретного языка
изучаются довольно быстро.
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, e-Xecutor, Вы писали:
EX>>Здравствуйте, jazzer, Вы писали:
J>>>Здравствуйте, Зверёк Харьковский, Вы писали:
J>>>все-таки по поводу девяти разных строчек — это скорее про perl EX>>Ха! Девять.. Мелко берёте EX>>Одних только Japh-ов уже не одна сотня J>Просвети темного, що це таке?
Japh=Just another perl hacker
Програмка, которая не совсем тривиальным образом выводит эту надпись
Правда далеко не все one liner, но встречаются весьма красивые варианты
Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, e-Xecutor, Вы писали:
EX>>Здравствуйте, jazzer, Вы писали:
J>>>Здравствуйте, Зверёк Харьковский, Вы писали:
J>>>все-таки по поводу девяти разных строчек — это скорее про perl EX>>Ха! Девять.. Мелко берёте EX>>Одних только Japh-ов уже не одна сотня J>Просвети темного, що це таке?
Здравствуйте, uw, Вы писали:
uw>А вот есть такой скромный маленький язык C. О нем не спорят до хрипоты, а чтобы писать на нем хорошие програмы нужно учиться месяц-два, да и книг можно вообще не читать. При этом хорошие програмы на нем пишут уже более тридцати лет. Вот ведь непорядок.
uw>Проблема в том, что на C++(равно как и на других языках) пишут программы и без (n+куча) лет и книг. И даже (n+куча)^2 книг и лет не гарантируют хорошесть програм. А вот нацеленность на написание хороших програм гарантирует это на 80-90% в не зависимости от используемых языковых средств.
Мне кажется, что вся прелесть языка С++ (которая и притягивает столько программистов) в глубоких и далеко идущих концепциях заложенных в нем, развитие которых приводит к пониманию совершенно новых неординарных идей и их эффективному применению сейчас и в будущем. Самый яркий пример этого библиотеки Boost, в частности метапрограммирование.
Здравствуйте, _Obelisk_, Вы писали:
_O_>Здравствуйте, Denwer, Вы писали:
D>>Много конечно, простоя под линуксом подразумевал все оставшееся. Но это очень маленькая часть от всех ОС. А большая то windows. И скоро все бедет сводиться к следующему: либо ты получаешь хорошую ЗП, и всегда есть возможность сменить работу, либо ты становишься реликвией, программируешь на С++, постоянно думаешь на что поесть, и все такое. Вот сам посмотри каково сейчас чистым сишникам живется, с работой всегда напряг(не надо приводить токо единичные случаи ), а что разве все что сейчас пишется нельзя написать на чистом С? Конечно можно, но не рационально. Поэтому и не пишется. Я сам сторонник С++(всеми руками и ногами), но такова реальность.И от этого не уйти. За нас выбор сделан майкрософтом.
_O_>Linux — это отнюдь не все остальное. Есть куча разных специфических ОС.
Ну что ты хотел что бы я перечислял все остальные ОС, я просто разделил на две категории windows и все остальные(ну назвал я эту часть линуксом потому что в этой части линуксов больше). Я вообще не говорю про ОС, какая лучше хуже, и все такое.
_O_>Вообще говоря, когда занимаешься созданием языков программирования (или чем-то с этим связанным), то смотреть на все эти споры о том, какой язык круче и что будет, когда его не будет, становится не интересно и скучно.
_O_>Нет существенной разницы на чем писать, если знаешь что писать. Особенности и ограничения данного конкретного языка _O_>изучаются довольно быстро.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>Но я вам другое скажу – программа, написанная с любовью и вдохновением, все же немножко другая. Не такая, как вышедшая из-под клавиатуры человека, любимая фраза которого «Надо сидеть и педалить код».
Respect, really respect!!!
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Здравствуйте, MaximE, Вы писали:
ME>(Conway's Law) В 1968г. Mel Conway постулировал, что структура любой информационной систеы изоморфна структуре организации построившей эту систему. Одним из замечательных следствий этого законо является то, что продукт всегда выражает ценности, интересы, таланты и цели создателей продукта и нет способа этого избежать.
Из этого следует, что плохой код пишут не очень хорошие люди. Хороший, красивый код получается у людей вообще хороших по жизни.
"И этого нельзя избежать".
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, e-Xecutor, Вы писали:
EX>Програмка, которая не совсем тривиальным образом выводит эту надпись EX>Правда далеко не все one liner, но встречаются весьма красивые варианты
EX>Типа: EX>
MaximE wrote:
> (Conway's Law) В 1968г. Mel Conway постулировал, что структура любой информационной систеы изоморфна структуре организации построившей эту систему. Одним из замечательных следствий этого законо является то, что продукт всегда выражает ценности, интересы, таланты и цели создателей продукта и нет способа этого избежать.
P.S.
Обратное также верно: нельзя сделать продукт так, чтобы он выражал качества, которыми би не обладали его создатели...
Здравствуйте, Denwer, Вы писали:
_O_>>Нет существенной разницы на чем писать, если знаешь что писать. Особенности и ограничения данного конкретного языка _O_>>изучаются довольно быстро.
D>ВОТ ИМЕННО ЭТО Я И ХОТЕЛ СКАЗАТЬ.
...для граждан, считающих, что я незаслуженно обхвалил С++.
Господа! Я вовсе не говорю, что С++ хороший язык! Более того, в статье прямо и недвусмысленно утверждается обратное!
Более того, я не пытался утверждать, что С++ лучше какого-либо языка.
Основной смысл это "тварэния":
— в том, что я люблю этот язык;
— в том, что некоторые языки программирования порождают культуру, зачастую, весьма сложную;
— в том, что я считаю язык программирования не просто инструментом порождения программ, а чем-то большим, что подруземевает даже определенный образ мышления.
ИМХО, большАя часть прелести, которую я вижу в своей профессии, порождена именно удовольствием от кодирования как использования определенных выразительных средств для выражения неких мыслей. Я пишу программы затем же, зачем сказки и статьи в КТ — потому что мне нравится это вид творчества.
С теми, кто опсорит эти утверждения (особенно первое ) я готов дискутировать.
А с "высказываниями" типа: "Да фигня этот ваш С++, учи лучше Яву, ДотНет, фарси, конструктор Лего" — не буду из прынцыпа.
Dixi.
Здравствуйте, LaptevVV, Вы писали:
LVV>Из этого следует, что плохой код пишут не очень хорошие люди. Хороший, красивый код получается у людей вообще хороших по жизни.
"Хорошие по жизни" и "не очень хорошие" — это субъективные оценки, которые слабо соотносятся с "ценностями, интересами, талантами и целями".
Плюс все оценки должны белаться на момент написания кода А какие у программиста ЦИТЦ в момент написания кода?
>работает ОС, сможет достаточно быстро разобраться в языке программирования. Меньше >всего это относиться к С++, потому что вот так все запущенно. Но всеже, если знаешь
Правила Си++ изучить не сильно сложно, хотя это и книжка страниц в триста.
Сложнее научиться писать хороший код на Си++, и пользоваться фичами только по делу. Вот это уже серьезная задача.
>С++, то писать на жабе не составит труда уже через 1 месяц.
Основной труде в Джаве — изучить библиотеки, которые с ней дают.
Здравствуйте, MaximE, Вы писали:
ME>P.S. ME>Обратное также верно: нельзя сделать продукт так, чтобы он выражал качества, которыми би не обладали его создатели...
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>...для граждан, считающих, что я незаслуженно обхвалил С++.
ЗХ>Господа! Я вовсе не говорю, что С++ хороший язык! Более того, в статье прямо и недвусмысленно утверждается обратное! ЗХ>Более того, я не пытался утверждать, что С++ лучше какого-либо языка.
ЗХ>Основной смысл это "тварэния": ЗХ>- в том, что я люблю этот язык; ЗХ>- в том, что некоторые языки программирования порождают культуру, зачастую, весьма сложную; ЗХ>- в том, что я считаю язык программирования не просто инструментом порождения программ, а чем-то большим, что подруземевает даже определенный образ мышления. ЗХ>ИМХО, большАя часть прелести, которую я вижу в своей профессии, порождена именно удовольствием от кодирования как использования определенных выразительных средств для выражения неких мыслей. Я пишу программы затем же, зачем сказки и статьи в КТ — потому что мне нравится это вид творчества.
ЗХ>С теми, кто опсорит эти утверждения (особенно первое ) я готов дискутировать. ЗХ>А с "высказываниями" типа: "Да фигня этот ваш С++, учи лучше Яву, ДотНет, фарси, конструктор Лего" — не буду из прынцыпа. ЗХ>Dixi.
Мой дисклаймер: C++ -- лучший на сегодня язык. Все остальные и в подмётки ему не годятся.
Здравствуйте, Шахтер, Вы писали:
Ш>Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>>...для граждан, считающих, что я незаслуженно обхвалил С++.
ЗХ>>Господа! Я вовсе не говорю, что С++ хороший язык! Более того, в статье прямо и недвусмысленно утверждается обратное! ЗХ>>Более того, я не пытался утверждать, что С++ лучше какого-либо языка.
ЗХ>>Основной смысл это "тварэния": ЗХ>>- в том, что я люблю этот язык; ЗХ>>- в том, что некоторые языки программирования порождают культуру, зачастую, весьма сложную; ЗХ>>- в том, что я считаю язык программирования не просто инструментом порождения программ, а чем-то большим, что подруземевает даже определенный образ мышления. ЗХ>>ИМХО, большАя часть прелести, которую я вижу в своей профессии, порождена именно удовольствием от кодирования как использования определенных выразительных средств для выражения неких мыслей. Я пишу программы затем же, зачем сказки и статьи в КТ — потому что мне нравится это вид творчества.
ЗХ>>С теми, кто опсорит эти утверждения (особенно первое ) я готов дискутировать. ЗХ>>А с "высказываниями" типа: "Да фигня этот ваш С++, учи лучше Яву, ДотНет, фарси, конструктор Лего" — не буду из прынцыпа. ЗХ>>Dixi.
Ш>Мой дисклаймер: C++ -- лучший на сегодня язык. Все остальные и в подмётки ему не годятся.
Добавление: дискутировать на эту тему я предпочитаю с помощью Калашникова.
Здравствуйте, Зверёк Харьковский, Вы писали:
Ш>>Мой дисклаймер: C++ -- лучший на сегодня язык. Все остальные и в подмётки ему не годятся. ЗХ>Зря вы так... Сейчас тут бои начнуться. Вот Влад заметит этот топик, и начнутся...
Нет, не факт. Он проблемные топики по ключевам словам ищет.
.Net говно. Си++ рулез. Винда маст дай! PHP лучше ASP.
Здравствуйте, Шахтер, Вы писали:
Ш>>Мой дисклаймер: C++ -- лучший на сегодня язык. Все остальные и в подмётки ему не годятся.
Ш>Добавление: дискутировать на эту тему я предпочитаю с помощью Калашникова.
Так все на позиции, приготовились ......
И чем же С++ лучше чем C# второй версии?
Для раздувки огня: в шарпе есть анонимные функции, частичное описание класса(т.е. partial), тип Type(кто знает тот поймет)
ЗЫ: токо не надо говорить что давайте посравниваем текущую версию шарпа, это не имеет смысла потому как выход уже будет очень скоро, а вот следующей версии С++ ждать ооочень долго.
ЗЫЫ: Аргументы о производительности не в тему.
ЗЫЫЫ: Я написал это не из за того, что кто то лучше или хуже, для меня С++ и C# одинаковые языки, просто утверждать что С++ лучший на сегодня язык, как то совсем не правельно, это говорю потому как я для себя самым интерсным моментом считаю именно проктирование, а не кодирование, а тут уже язык не так важен.
Здравствуйте, Maxim S. Shatskih, Вы писали:
>>С++, то писать на жабе не составит труда уже через 1 месяц.
MSS>Основной труде в Джаве — изучить библиотеки, которые с ней дают.
Позволю себе обобщить: основная трудность — разобратся не с операторами языка, а со средой разработки (стандартные и нестандартные библиотеки, доп. средства). Кто с C++ Builder на Visual C++ переходил — знает.
А операторы языка выучить — пары упражнений чуть сложнее "Hello, world" вполне хватает.
ЗХ>Основной смысл это "тварэния": ЗХ>- в том, что я люблю этот язык; ЗХ>- в том, что некоторые языки программирования порождают культуру, зачастую, весьма сложную; ЗХ>- в том, что я считаю язык программирования не просто инструментом порождения программ, а чем-то большим, что подруземевает даже определенный образ мышления. ЗХ>С теми, кто опсорит эти утверждения (особенно первое ) я готов дискутировать.
Главное не только любить но и уметь. Вообще, всячечкая "культура" это какие то надуманные высокопарные слова.
все значительно проще, в сектантские (однобоговые) кланы собираются как правило — новички , которые больше играют чем работают, маньяки (люди компенсирующие внутреннюю пустоту)
Надо писать статьи наоборот — только вот их не будут публиковать, к сожалению
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
декларирующие простоту, ясность и отсутствие всякой дурной романтики.
такое (когда девятый вариант не заработал) я наблюдаю только в двух случаях:
а) абсолютно ненастроен на работу и пишешь, стирая девять раз одно и тоже вместо того чтобы сразу сесть и написать нормально
б) в крутом недосыпе третью ночь в предрассветной тишине
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Здравствуйте, Privalov, Вы писали:
P>Позволю себе обобщить: основная трудность — разобратся не с операторами языка, а со средой разработки (стандартные и нестандартные библиотеки, доп. средства). Кто с C++ Builder на Visual C++ переходил — знает.
Знаю, переходил
после этого у меня (почему-то) стойкое отвращение к борландовским компиляторам...
P> А операторы языка выучить — пары упражнений чуть сложнее "Hello, world" вполне хватает.
гы... не знаю. Я по-другому делал
Вообщем, C++ не язык для разработки бизнес-проектов, где главное — надежность, простота модификации и СРОКИ.
Для этого есть Java и C#. Это действительно так. Эффективные программы пишут на C.
На фига тогда нужен C++ ?!! Загадка...
(программист C++, опыт > 3 лет).
A>Вообщем, C++ не язык для разработки бизнес-проектов, где главное — надежность, простота модификации и СРОКИ. A>Для этого есть Java и C#. Это действительно так. Эффективные программы пишут на C. A>На фига тогда нужен C++ ?!! Загадка... A>(программист C++, опыт > 3 лет).
смешная шутка
Веру-ю-у! В авиацию, в научную революци-ю-у, в механизацию сельского хозяйства, в космос и невесомость! Веру-ю-у! Ибо это объективно-о! (Шукшин)
Здравствуйте, alexvrsdn, Вы писали:
A>Вообщем, C++ не язык для разработки бизнес-проектов, где главное — надежность, простота модификации и СРОКИ. A>Для этого есть Java и C#. Это действительно так. Эффективные программы пишут на C. A>На фига тогда нужен C++ ?!! Загадка... A>(программист C++, опыт > 3 лет).
Как мало ты ещё знаешь о программировани... как много предстоит узнать... завидую я тебе.
... << RSDN@Home 1.1.3 stable >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Хороший язык — это мощный, если надо, понятный и стройный,
не дающий ошибиться, дает все легко и погнятно сделать,
делает за вас что обычно сложным кажется,
устраняет рутинные операции, простой, позволяет делать сложные системы простым — стройным способом,
легко это выразив, сам к тому расположив в зависимости от ситуации, несложно.
Осваевается большинством, красив, как только вы о чем подумали все понятно как сделать.
Не шутка.
Медкософт долго думала и сделала C#, но это во всех отношениях не СПН.
А только призказка к призказке, но почему нельзя?
Сначала на ассеьблере писали ?
> Там нужен язык другой – пригодный для производства штампованных программ штампованными программистами. > Язык, который подразумевает только один вариант выражения мысли. > Язык, на котором десять разных программистов по одному и тому же заданию напишут практически идентичный код
Вот! Вот оно, самое лучшее определение "правильного" языка! То есть язык, который позволяет ВСЕМ (и разработчикам, и последующим апгрейдерам) понимать что происходит сейчас, как это МОЖЕТ сказаться потом и как надо улучшать то что есть.
> Язык, в котором шаг влево, а равно и шаг вправо просто нельзя выразить средствами языка.
Это уже совсем другое качество, не надо его приплетать к вышестоящим.
ЗХ>Язык, который никто и никогда не будет любить.
Эх!... Такое шикарное начало и такой ДЕБИЛЬНЫЙ вывод. Разочаровал...
Здравствуйте, Thornik, Вы писали:
ЗХ>>Язык, который никто и никогда не будет любить.
T>Эх!... Такое шикарное начало и такой ДЕБИЛЬНЫЙ вывод. Разочаровал...
Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
А может быть и в:
Я безнадежен.
Зверьку огромный респект!
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
E>Имхо, вывод был в словах: E>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
Это скорее бред, быстро зафиксированный на бумагу. Нельзя ли более чётко выразить свою позицию?
E>А может быть и в: E>
E>Я безнадежен.
Ну это тоже не вывод, а ДИАГНОЗ.
Мне гораздо интереснее процитированная мной ранее часть про "однозначность" языка. Что скажете по этому поводу?
Здравствуйте, Thornik, Вы писали:
E>>Имхо, вывод был в словах: E>>Я – программист. Мой любимый язык – С++. Это отвратительный язык. Я могу сказать на нем любую глупость. Мне не помогут и двести книг. Девятый вариант строчки тоже не сработал. Я безнадежен.
T>Это скорее бред, быстро зафиксированный на бумагу. Нельзя ли более чётко выразить свою позицию?
Вам кротко или длинно?
E>>А может быть и в: E>>
E>>Я безнадежен.
T>Ну это тоже не вывод, а ДИАГНОЗ.
Между прочим, если не ошибаюсь, записи отдельных слов в предложениях исключительно заглавными буквами является серьезным симптомом
T>Мне гораздо интереснее процитированная мной ранее часть про "однозначность" языка. Что скажете по этому поводу?
Есть мудрость: "Можно сделать систему, которой сможет пользоваться даже дурак и только дурак станет ей пользоваться". Имхо, по отношению к языкам программирования эта мудрость так же срабатывает.
Про однозначность языка я думаю вот что. Сейчас я буду говорить о творчестве. Поэтому пусть меня не пинают те, кто считают, что программирование -- это производство, работа, обязаловка, средство зарабатывания денег и пр. Если они так думают, это их дело, они правы, они (очень вероятно) устроились в жизни (гораздо) лучше меня. Но это их проблемы. Для меня программирование это то удачное стечение обстоятельств, когда хобби и работа являются одним и тем же занятием.
Так вот о творчестве. Имхо, все зависит от того, на каком уровне появляется возможность проявить свою фантазию, свои навыки, свой стиль, свой способ выражения мыслей в конце-концов. Если у меня строгий, однозначный язык (вроде Java или Eiffel), то можно сказать, что я пользуюсь языком со скудными выразительными способностями. Я мого сказать только "карандаш лежит на столе". Не "на столе лежит карандаш", не "лежит карандаш на столе", "лежит на столе карандаш" и даже не "карандаш на столе". Я точно и однозначно передаю факт. Без возможности высказывания собственного отношения к этому факту.
В таких условиях я могу проявлять свое стремление к творчеству только в способе нагромождения фактов. Образно говоря, представим, что в моем распоряжении бетонные блоки стандатного размера и фактуры. У них нет выраженной индивидуальности. Они все одинаковые. Если я хочу создать из них что-то отличное от других я либо должен придумать новый тип здания (с новым предназначением), либо сильно переиначив компоновку уже существующих зданий. Придумать какое-то принципиально новое здание черезвычайно сложно. Гораздо проще что-нибудь переиначить. Например, простроить самый большой гараж. Или жилой дом, в котором стандартными будут 7-ми комнатные квартиры. Но ведь у всех в распоряжении одинаковые блоки, поэтому здания будут выглядеть очень похоже. Мне же этого не хочется, поэтому нужно так строить здание, чтобы блоки выглядели всего лишь мальнькими кирпичиками, тогда из них можно будет плести архитектурные кружева. Но, чтобы блоки казались маленькими сама постройка должна быть большой. И чем ажурнее кружева, тем больше сооружение. Вплоть до гигантизма. Ситуацию с Java фреймворками не напоминает?
С другой стороны, если в моем распоряжении не однозначный, не строгий язык, то я получаю в свое распоряжение возможность не просто передавать факты. Я получаю возможность высказывать при этом свое отношение к ним. Мое творчество будет выражаться не в изобретении новых фактов или их совершенно невероятном нагромождении. А в иной форме их передачи. Если проводить аналогию с архитектурой, то я начинаю работать не с одинаковыми штампованными бетонными блоками, а, например, с разнокалиберными гранитными глыбами или же с деревом различных пород. Мне не нужно изобретать новый тип здания, я могу строить одну и ту же садовую беседку, но из разных материалов, в разных ландшафтах, заставляя эту беседку навевать на своих посетителей разные настроения.
Еще интереснее сравнение с литературой. Например, "Праздник, который всегда с тобой" Хемингуэя. Если изложить ее содержание строгим и однозначным языком, будет ли это произведение передавать то очарование Парижа, которое сумел выразить Хемингуэй? Очень сомневаюсь.
И вся разница в том, что имея в своем распоряжении очень гибкий материал (неоднозначный и противоречивый язык) можно из очень простых обыденных фактов сделать что-то. Ну казалось бы, что такого в том, что человек сидит день в кафе и пишет что-то в блокноте. И в кармане у него кроличья лапка. И он встретил знакомого, которого не хотел встречать. И они поговорили. Что в это такого? Или в том, что у человека не было денег. Он не хотел показывать никому своего отчаяния. Не хотел, чтобы его жалели. Он уже почти не на что не надеялся. И вдруг письмо с извещением о переводе гонорара. И посещение кафе. И удовольствие от хрустящей жареной картошки, запитой несколькими кружками холодного пива.
Что в этом такого? Н-И-Ч-Е-Г-О!
Все дело в том, как это написано. Всего лишь. Это всего лишь талантливое описание совершенно обыденных вещей. Не самый большой в мире гараж или ажурное архитектурное кружево из многотонных бетонных блоков. Но описание, ставшее возможным только из-за того, что автор имел возможность передавать оттенки своего отношения к происходящему.
Так вот я хочу заниматься небольшими обыденными вещами. Но делать это со своим стилем, со своим настроением, со своей фантазией. Совершенно не строгий, ущербный, полный граблей, капканов и подводных камней C++ дает мне такую возможность. И, видимо, не только мне.
Вот что-то такое... Не совсем то, что я чувствую и что хотел бы сказать, но близко к тому
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>Так вот я хочу заниматься небольшими обыденными вещами. Но делать это со своим стилем, со своим настроением, со своей фантазией. Совершенно не строгий, ущербный, полный граблей, капканов и подводных камней C++ дает мне такую возможность. И, видимо, не только мне.
... по этому я так люблю обсуждать Руби.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, VladD2, Вы писали:
VD>>... по этому я так люблю обсуждать Руби.
E> E>Кстати, если сравнивать Руби с тем же Python, то получается очень похоже на сравнение C++ и Java E>Поэтому я так балдею от Руби.
Не ты просто мало курил питон, он только на вид простой
Тем более практически все выкрутасы на руби которые я тут от тебя увидел, легко реализуются и на питоне.