Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 09:16
Оценка: 149 (15) +5 -3 :))) :))
Hi,

Перечитываю сейчас прекрасный, прекрасный построчный комментарий к стандарту языка 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.

---
With best regards, Konstantin
Re: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 11:16
Оценка: +1 :))) :)
Здравствуйте, Tilir, Вы писали:

T>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"


Ничем не доказанное утверждение.
Язык Lisp и его более современные диалекты намного мощнее C/C++, просто сравнивать смешно.
Язык C имеет свою отдельную низкоуровневую нишу.
Допустим книга замечательная, никто не спорит, но зачем же говорить о том, что язык C венец творения, когда это, мягко говоря, не так.
Re[2]: Решение проблемы двух ботинок
От: alpha21264 СССР  
Дата: 23.12.11 11:32
Оценка: :))
Здравствуйте, HrorH, Вы писали:

HH>Здравствуйте, Tilir, Вы писали:


T>>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"


HH>Ничем не доказанное утверждение.

HH>Язык Lisp и его более современные диалекты намного мощнее C/C++, просто сравнивать смешно.
HH>Язык C имеет свою отдельную низкоуровневую нишу.
HH>Допустим книга замечательная, никто не спорит, но зачем же говорить о том, что язык C венец творения, когда это, мягко говоря, не так.

В процитированном тексте вроде не называют С++ венцом творения.
И вообще, учись читать.

PS. Как бы мне на Лиспе что-нибудь написать. Если знаешь, кинь ссылку.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 11:48
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>В процитированном тексте вроде не называют С++ венцом творения.

A>И вообще, учись читать.

С этого места поподробнее.
Re[4]: Решение проблемы двух ботинок
От: alpha21264 СССР  
Дата: 23.12.11 11:51
Оценка: :))
Здравствуйте, HrorH, Вы писали:

HH>Здравствуйте, alpha21264, Вы писали:


A>>В процитированном тексте вроде не называют С++ венцом творения.

A>>И вообще, учись читать.

HH>С этого места поподробнее.


Если человек не умеет читать, то "поподробнее" бесполезно — он все равно не прочтет.
В статье ничего не говорится про С++ как венец творения. Ты это как-то вычитал и обвинил автора.
Что тебе подробнее? Куда подробнее? Что тут дробить? Это ОДИН БИТ ИНФОРМАЦИИ!!! Он не дробится.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 11:57
Оценка: :)
Здравствуйте, 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, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?
Re[5]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 12:04
Оценка: +1 -2
Здравствуйте, alpha21264, Вы писали:

A>Здравствуйте, HrorH, Вы писали:


HH>>Здравствуйте, alpha21264, Вы писали:


A>>>В процитированном тексте вроде не называют С++ венцом творения.

A>>>И вообще, учись читать.

HH>>С этого места поподробнее.


A>Если человек не умеет читать, то "поподробнее" бесполезно — он все равно не прочтет.

A>В статье ничего не говорится про С++ как венец творения. Ты это как-то вычитал и обвинил автора.
A>Что тебе подробнее? Куда подробнее? Что тут дробить? Это ОДИН БИТ ИНФОРМАЦИИ!!! Он не дробится.

Автор топика цитирует высказывание о том, что часто сравнения языка C с другими языками не состоятельны. И приводит в качестве примера Lisp.
Из этого можно сделать вывод, что он считает C мощнее Lisp-a.
Да, он не говорит, что C венец творения, но с такой аргументацией, которую он использует, это можно сказать о любом языке. Ведь аргументация нулевая.
Также я не цитировал его фразу как то, что C++ венец творения. Это Вы уже неправильно цитируете меня.
То есть если я и не умею читать, то Вы тоже.
Далее Вы пишите:
И вообще, учись читать.
К чему относится это "и вообще", если, как Вы говорите, там один бит информации?
Как видите, я по крайней мере иногда пытаюсь читать внимательно.
И последнее. Холиварить дело хорошее, но надо держать себя в руках.
Re[3]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 12:12
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Но давайте для эксперимента обобщим это утверждение о недостатке объективности в аргументации с одного обзора на большинство.


T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?


Т.е Вы правда считаете, что C это венец творения?
Я не собираюсь доказывать, что Lisp или Haskell лучше чем C.
Если Вы в этом сомневаетесь, то значит просто не знаете эти языки.
Если нужна информация по Haskell, могу дать ссылки.
Что касается промышленного применения, то "более массовое" никогда не означало "лучшее".
Re[3]: Решение проблемы двух ботинок
От: FragMent  
Дата: 23.12.11 12:14
Оценка: 8 (1)
Здравствуйте, Tilir, Вы писали:

T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?


Не совсем подходит под критерии, но вот статья от уважаемого человека
http://www.softcraft.ru/paradigm/fp/whynotfp.shtml
Re[3]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 12:23
Оценка:
Здравствуйте, Tilir, Вы писали:

T>Но давайте для эксперимента обобщим это утверждение о недостатке объективности в аргументации с одного обзора на большинство.


T>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C, где его (Lisp и т.д.) объективные недостатки (а любой из них объективно настолько менее распространён в промышленном программировании, чем C, что как вы выразились "даже сравнивать смешно" -- это же не случайно) были бы... хм... ну хоть упомянуты что ли?


Какие недостатки этих языков Вы видите?
Недостатки есть везде, и действительно не все любят о них говорить.
Но иногда недостатком кажется то, что непривычно и не знакомо.
Re[4]: Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 12:38
Оценка:
Здравствуйте, FragMent, Вы писали:

T>>Покажите мне хоть один (опубликованный в реферабельном журнале) позитивный обзор языка Lisp (CLOS, Haskell, Miranda, Nemerle) в сравнении с C


FM>Не совсем подходит под критерии, но вот статья от уважаемого человека

FM>http://www.softcraft.ru/paradigm/fp/whynotfp.shtml

Статья с названием "Why no one uses functional languages" это действительно нечто, что не подходит под слова "позитивный обзор"
Re[3]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 12:39
Оценка: +1
Здравствуйте, Tilir, Вы писали:

T>Здравствуйте, HrorH, Вы писали:


T>>>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"


HH>>Ничем не доказанное утверждение.


T>Утверждение о чём?


Смотрите. Говорится о том, что в статье опускаются более существенные недостатки языка Lisp, чем те недостатки языка C, которые упоминаются в статье.
Здесь неявно утверждается, что такие недостатки в языке Lisp есть.
Но во-первых, не говорится, какие конкретно недостатки.
Во-вторых, это неявное утверждение не доказывается.
Re: Решение проблемы двух ботинок
От: boot  
Дата: 23.12.11 12:45
Оценка: -1
Здравствуйте, Tilir, Вы писали:

T>...


Добавлю только, что совершенный язык, это тот, в котором меньше слов, а сказать можно больше. Наличие 2-х пунктов сравнения, значительно затрудняет задачу поиска совершенного языка. То ли найти клопа на веревке для белья, а то ли на всем полу...
Жизнеспособность прямо пропорциональна простоте!
Re[4]: Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 12:53
Оценка: 62 (1) +1
Здравствуйте, 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) а можно сказать "не надо управлять памятью вообще, на нашей новой платформе вы сможете ходить не касаясь земли а значит и обувь вам будет не нужна" (то что ходить можно будет только по этой платформе а платформа -- два на полтора метра -- в обзоре упускается). И т.п.
Re: Решение проблемы двух ботинок
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 23.12.11 13:03
Оценка:
T>"Предложения использовать иные [кроме C] языки часто имеет существенные изъяны в своей аргументации. Как пример -- анализ преимуществ языка Lisp приведённый в [ссылка на статью какого-то лисповеда из Беркли] основан на том как средcтва этого языка позволяют преодолевать проблемы, присущие C, но при этом опускаются его [языка Lisp] гораздо более существенные недостатки (примерно как если бы кто-то предлагал людям прыгать на одной ноге как средство избежать необходимости носить два ботинка, когда ходишь на двух)"

так автор сам-то говорит, чем язык C хуже Лисп?
или он других упрекает за то, что когда они говорят о своем языке, то хвалят только свой язык; а при этом сам же говоря о своем языке, хвалит только свой язык?
Re[5]: Решение проблемы двух ботинок
От: HrorH  
Дата: 23.12.11 13:03
Оценка: :)
Здравствуйте, Tilir, Вы писали:


T>Вы будете удивлены но я не просто знаю Haskell, я часто его использую. Там где он мне нужен, разумеется. Мало того -- у меня даже есть статья по Haskell в журнале RSDN, загляните в профиль. Внимательно перечитайте исходное сообщение -- там ничего не возносится и ничего не принижается. Постарайтесь вникнуть и понять о чём идёт речь. В индустрии есть объективные проблемы -- скажем работа с памятью это всегда проблема, а делать это хоть сколько-нибудь кроссплатформенно это уже ПРОБЛЕМА. Но эти проблемы сравнимы с проблемами подбора верной обуви, чтобы не ходить босым и не ранить ноги. Можно рассмотреть их серьёзно и конструктивно (см. "Memory as a Programming Concept in C and C++" by Frantisek Franek, Cambridge University Press, 2004) а можно сказать "не надо управлять памятью вообще, на нашей новой платформе вы сможете ходить не касаясь земли а значит и обувь вам будет не нужна" (то что ходить можно будет только по этой платформе а платформа -- два на полтора метра -- в обзоре упускается). И т.п.


Если Вы прочитаете мои ответы, то поймете, что я хоть и не сразу, но вроде вник в Ваше сообщение.
Теперь я предлагаю Вам вникнуть самому в мои ответы.
По поводу Haskell. Если Вы знаете его, не смейтесь, лучше помогите.
Не могли бы Вы объяснить, как использовать type class Traversable на каком-нибудь доступном примере?
Или Вы используете вместо него что-то другое?
Re[2]: Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 13:17
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>так автор сам-то говорит, чем язык C хуже Лисп?

DG>или он других упрекает за то, что когда они говорят о своем языке, то хвалят только свой язык; а при этом сам же говоря о своем языке, хвалит только свой язык?

Автор и не рвётся решать проблемы других языков. Никакого сравнения с его стороны, равно как и никаких утверждений что Lisp "лучше" или "хуже" чем C -- не происходит. И вы ошибаетесь -- автор не "хвалит язык C". Хвалить на 1600 страницах -- это уже что-то арабское. Автор рассматривает некоторые экономические и социально-культурные аспекты нового стандарта -- всего-то. И рассматривает их объективно, указывая места где были приняты компромиссные решения и причины этих компромиссов.
Re[2]: Решение проблемы двух ботинок
От: Tilir Россия http://tilir.livejournal.com
Дата: 23.12.11 13:18
Оценка:
Здравствуйте, boot, Вы писали:

B>Добавлю только, что совершенный язык, это тот, в котором меньше слов, а сказать можно больше.


Не очевидно.
Re[3]: Решение проблемы двух ботинок
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 23.12.11 14:06
Оценка:
T>Не очевидно.

как минимум очевидна чуть другая формулировка:
(при прочих равных) лучше тот язык, который позволяет записать решение меньшим кол-вом бит.

но т.к. человек плохо воспринимает абракадабру вида 1%343%:?№!ФВs-Az, то это требование заменяется другим:
(при прочих равных) лучше тот язык, который позволяет записать решение меньшим кол-вом термов
Re[2]: Решение проблемы двух ботинок
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 23.12.11 14:17
Оценка:
Здравствуйте, boot, Вы писали:

B>Добавлю только, что совершенный язык, это тот, в котором меньше слов, а сказать можно больше. Наличие 2-х пунктов сравнения, значительно затрудняет задачу поиска совершенного языка. То ли найти клопа на веревке для белья, а то ли на всем полу...


Совершенный язык помогает решить задачу быстро, дёшево и качественно. Соответсвенно, он должен быть не только краток, но и широко распространён, прост в изучении, итд.
Ce n'est que pour vous dire ce que je vous dis.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.