Перечитываю сейчас прекрасный, прекрасный построчный комментарий к стандарту языка C ("The New C Standard -- An Economical and Cultural Commentary" by Derek M. Jones, свежую версию всегда можно выкачать бесплатно здесь).
Совершенно гениальная фраза из введения:
"Proposals to use other languages sometimes have more obvious flaws in their arguments. An analysis of why Lisp should be used [398] is based on how that language overcomes some of the C-inherent problems, while overlooking its own more substantial weaknesses (rather like proposing that people hop on one leg as a solution to wearing out two shoes by walking on two)"
Близкий к тексту перевод (в квадратных скобках -- мои комментарии):
"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
Мне кажется, это прекрасно. Достаточно просто почитать немного этот форум и "решатели проблемы двух ботинок" обнаружатся в ассортименте. Мне кажется, эта фраза достойна быть мемом. Чтобы, когда видишь как люди изощряются на одной ноге прыгать, всё сразу было ЯСНО -- ага, вот ещё один дядя решает проблему двух ботинок.
Кстати вся книга совершенно удивительна. Относительно каждой строчки стандарта C99 обсуждаются причины почему она должна быть именно такой и не иначе, приводится много кода, сравнение с другими языками (в первую очередь C++), обсуждается куча интересных вопросов из экономики и социологии разработки ПО, приводятся результаты статистических исследований и т.п., очень рекомендую к прочтению всем, кто интересуется языком C. Правда объёмная -- чуть больше 1600 страниц в pdf.
Здравствуйте, Tilir, Вы писали:
T>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
Ничем не доказанное утверждение.
Язык Lisp и его более современные диалекты намного мощнее C/C++, просто сравнивать смешно.
Язык C имеет свою отдельную низкоуровневую нишу.
Допустим книга замечательная, никто не спорит, но зачем же говорить о том, что язык C венец творения, когда это, мягко говоря, не так.
Здравствуйте, HrorH, Вы писали:
HH>Здравствуйте, Tilir, Вы писали:
T>>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
HH>Ничем не доказанное утверждение. HH>Язык Lisp и его более современные диалекты намного мощнее C/C++, просто сравнивать смешно. HH>Язык C имеет свою отдельную низкоуровневую нишу. HH>Допустим книга замечательная, никто не спорит, но зачем же говорить о том, что язык C венец творения, когда это, мягко говоря, не так.
В процитированном тексте вроде не называют С++ венцом творения.
И вообще, учись читать.
PS. Как бы мне на Лиспе что-нибудь написать. Если знаешь, кинь ссылку.
Здравствуйте, HrorH, Вы писали:
HH>Здравствуйте, alpha21264, Вы писали:
A>>В процитированном тексте вроде не называют С++ венцом творения. A>>И вообще, учись читать.
HH>С этого места поподробнее.
Если человек не умеет читать, то "поподробнее" бесполезно — он все равно не прочтет.
В статье ничего не говорится про С++ как венец творения. Ты это как-то вычитал и обвинил автора.
Что тебе подробнее? Куда подробнее? Что тут дробить? Это ОДИН БИТ ИНФОРМАЦИИ!!! Он не дробится.
Здравствуйте, HrorH, Вы писали:
T>>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
HH>Ничем не доказанное утверждение.
Утверждение о чём? Автор вообще очень аккуратно отозвался ровно об одной статье "[398] R. J. Fateman. Software fault prevention by language choice: Why C is not my favorite language. University of California at Berkeley, 1999" так что автора сложно упрекнуть anyway.
Но давайте для эксперимента обобщим это утверждение о недостатке объективности в аргументации с одного обзора на большинство.
Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?
Здравствуйте, alpha21264, Вы писали:
A>Здравствуйте, HrorH, Вы писали:
HH>>Здравствуйте, alpha21264, Вы писали:
A>>>В процитированном тексте вроде не называют С++ венцом творения. A>>>И вообще, учись читать.
HH>>С этого места поподробнее.
A>Если человек не умеет читать, то "поподробнее" бесполезно — он все равно не прочтет. A>В статье ничего не говорится про С++ как венец творения. Ты это как-то вычитал и обвинил автора. A>Что тебе подробнее? Куда подробнее? Что тут дробить? Это ОДИН БИТ ИНФОРМАЦИИ!!! Он не дробится.
Автор топика цитирует высказывание о том, что часто сравнения языка C с другими языками не состоятельны. И приводит в качестве примера Lisp.
Из этого можно сделать вывод, что он считает C мощнее Lisp-a.
Да, он не говорит, что C венец творения, но с такой аргументацией, которую он использует, это можно сказать о любом языке. Ведь аргументация нулевая.
Также я не цитировал его фразу как то, что C++ венец творения. Это Вы уже неправильно цитируете меня.
То есть если я и не умею читать, то Вы тоже.
Далее Вы пишите:
И вообще, учись читать.
К чему относится это "и вообще", если, как Вы говорите, там один бит информации?
Как видите, я по крайней мере иногда пытаюсь читать внимательно.
И последнее. Холиварить дело хорошее, но надо держать себя в руках.
Здравствуйте, Tilir, Вы писали:
T>Но давайте для эксперимента обобщим это утверждение о недостатке объективности в аргументации с одного обзора на большинство.
T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?
Т.е Вы правда считаете, что C это венец творения?
Я не собираюсь доказывать, что Lisp или Haskell лучше чем C.
Если Вы в этом сомневаетесь, то значит просто не знаете эти языки.
Если нужна информация по Haskell, могу дать ссылки.
Что касается промышленного применения, то "более массовое" никогда не означало "лучшее".
Здравствуйте, Tilir, Вы писали:
T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?
Здравствуйте, Tilir, Вы писали:
T>Но давайте для эксперимента обобщим это утверждение о недостатке объективности в аргументации с одного обзора на большинство.
T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?
Какие недостатки этих языков Вы видите?
Недостатки есть везде, и действительно не все любят о них говорить.
Но иногда недостатком кажется то, что непривычно и не знакомо.
Здравствуйте, FragMent, Вы писали:
T>>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C
FM>Не совсем подходит под критерии, но вот статья от уважаемого человека FM>http://www.softcraft.ru/paradigm/fp/whynotfp.shtml
Статья с названием "Why no one uses functional languages" это действительно нечто, что не подходит под слова "позитивный обзор"
Здравствуйте, Tilir, Вы писали:
T>Здравствуйте, HrorH, Вы писали:
T>>>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
HH>>Ничем не доказанное утверждение.
T>Утверждение о чём?
Смотрите. Говорится о том, что в статье опускаются более существенные недостатки языка Lisp, чем те недостатки языка C, которые упоминаются в статье.
Здесь неявно утверждается, что такие недостатки в языке Lisp есть.
Но во-первых, не говорится, какие конкретно недостатки.
Во-вторых, это неявное утверждение не доказывается.
Добавлю только, что совершенный язык, это тот, в котором меньше слов, а сказать можно больше. Наличие 2-х пунктов сравнения, значительно затрудняет задачу поиска совершенного языка. То ли найти клопа на веревке для белья, а то ли на всем полу...
Здравствуйте, HrorH, Вы писали:
HH>Т.е Вы правда считаете, что C это венец творения? HH>Я не собираюсь доказывать, что Lisp или Haskell лучше чем C. HH>Если Вы в этом сомневаетесь, то значит просто не знаете эти языки. HH>Если нужна информация по Haskell, могу дать ссылки. HH>Что касается промышленного применения, то "более массовое" никогда не означало "лучшее".
Вы будете удивлены но я не просто знаю Haskell, я часто его использую. Там где он мне нужен, разумеется. Мало того -- у меня даже есть статья по Haskell в журнале RSDN, загляните в профиль. Внимательно перечитайте исходное сообщение -- там ничего не возносится и ничего не принижается. Постарайтесь вникнуть и понять о чём идёт речь. В индустрии есть объективные проблемы -- скажем работа с памятью это всегда проблема, а делать это хоть сколько-нибудь кроссплатформенно это уже ПРОБЛЕМА. Но эти проблемы сравнимы с проблемами подбора верной обуви, чтобы не ходить босым и не ранить ноги. Можно рассмотреть их серьёзно и конструктивно (см. "Memory as a Programming Concept in C and C++" by Frantisek Franek, Cambridge University Press, 2004) а можно сказать "не надо управлять памятью вообще, на нашей новой платформе вы сможете ходить не касаясь земли а значит и обувь вам будет не нужна" (то что ходить можно будет только по этой платформе а платформа -- два на полтора метра -- в обзоре упускается). И т.п.
T>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"
так автор сам-то говорит, чем язык C хуже Лисп?
или он других упрекает за то, что когда они говорят о своем языке, то хвалят только свой язык; а при этом сам же говоря о своем языке, хвалит только свой язык?
T>Вы будете удивлены но я не просто знаю Haskell, я часто его использую. Там где он мне нужен, разумеется. Мало того -- у меня даже есть статья по Haskell в журнале RSDN, загляните в профиль. Внимательно перечитайте исходное сообщение -- там ничего не возносится и ничего не принижается. Постарайтесь вникнуть и понять о чём идёт речь. В индустрии есть объективные проблемы -- скажем работа с памятью это всегда проблема, а делать это хоть сколько-нибудь кроссплатформенно это уже ПРОБЛЕМА. Но эти проблемы сравнимы с проблемами подбора верной обуви, чтобы не ходить босым и не ранить ноги. Можно рассмотреть их серьёзно и конструктивно (см. "Memory as a Programming Concept in C and C++" by Frantisek Franek, Cambridge University Press, 2004) а можно сказать "не надо управлять памятью вообще, на нашей новой платформе вы сможете ходить не касаясь земли а значит и обувь вам будет не нужна" (то что ходить можно будет только по этой платформе а платформа -- два на полтора метра -- в обзоре упускается). И т.п.
Если Вы прочитаете мои ответы, то поймете, что я хоть и не сразу, но вроде вник в Ваше сообщение.
Теперь я предлагаю Вам вникнуть самому в мои ответы.
По поводу Haskell. Если Вы знаете его, не смейтесь, лучше помогите.
Не могли бы Вы объяснить, как использовать type class Traversable на каком-нибудь доступном примере?
Или Вы используете вместо него что-то другое?
Здравствуйте, DarkGray, Вы писали:
DG>так автор сам-то говорит, чем язык C хуже Лисп? DG>или он других упрекает за то, что когда они говорят о своем языке, то хвалят только свой язык; а при этом сам же говоря о своем языке, хвалит только свой язык?
Автор и не рвётся решать проблемы других языков. Никакого сравнения с его стороны, равно как и никаких утверждений что Lisp "лучше" или "хуже" чем C -- не происходит. И вы ошибаетесь -- автор не "хвалит язык C". Хвалить на 1600 страницах -- это уже что-то арабское. Автор рассматривает некоторые экономические и социально-культурные аспекты нового стандарта -- всего-то. И рассматривает их объективно, указывая места где были приняты компромиссные решения и причины этих компромиссов.
как минимум очевидна чуть другая формулировка:
(при прочих равных) лучше тот язык, который позволяет записать решение меньшим кол-вом бит.
но т.к. человек плохо воспринимает абракадабру вида 1%343%:?№!ФВs-Az, то это требование заменяется другим:
(при прочих равных) лучше тот язык, который позволяет записать решение меньшим кол-вом термов
Здравствуйте, boot, Вы писали:
B>Добавлю только, что совершенный язык, это тот, в котором меньше слов, а сказать можно больше. Наличие 2-х пунктов сравнения, значительно затрудняет задачу поиска совершенного языка. То ли найти клопа на веревке для белья, а то ли на всем полу...
Совершенный язык помогает решить задачу быстро, дёшево и качественно. Соответсвенно, он должен быть не только краток, но и широко распространён, прост в изучении, итд.