В своей книге "Почему Америка Наступает" 2002 года издания Андрей Паршнев разбирает печально известный феномен отрицательного торгового сальдо США. Это когда США просто печатают деньги и покупают на них товары за границей. Печатают много -- 400 миллиардов долларов в год. Но не это самое интересное.
Самое интересное заключается в том на что эти доллары затем тратились, приведу слова самого автора:
"На что иностранные получатели долларов их тратили? На два вида покупок: покупали недвижимость в США и акции американских высокотехнологичных компаний
<...>
Так или иначе, но высокотехнологичные компании оказались переоценены. После ряда кризисов их стоимость упала
<...>
одновременно готовится упасть и рынок американской недвижимости.
Получилось, что Америка приобрела много разных товаров, заплатив за них акциями своих компаний и недвижимостью...
<...>
не стоит рассматривать эти события как катастрофу для Америки -- это лишь завершение некой коммерческой операции, в дураках-то остались не американцы, а те кто на чёрный день запас долларов, акций и недвижимости в США."
Напомню, что писалось всё это в 2002 году, *восемь* лет назад, но автору удалось предугадать современный кризис на рынке недвижимости США, повлёкший за собой мировой кризис.
Так что современный американский кризис пошёл на пользу американцам. Заодно Америка сильно нагадила и Европе -- по ней кризис ударил ещё как. А про Россию вообще не стоит говорить, если раньше мы вставали с колен, то теперь с головой окунулись в содержимое деревенского сортира.
Помимо прочего г.Паршнев умудрился предсказать и увеличение напряжённости между США и Ираном.
Это всё навело меня на мысль о ёще одном американском явлении -- боевых роботах. Нет, не трансформерах, а самых настоящих боевых роботах.
Некоторое время назад в блоге г.Стиллавина обсуждалась новость о том что америкосы разработали очередного боевого робота, ну и рунет не подвёл -- сарказм, ирония и прочие способы показать тупость американцев просто расцвели под этой записью. Лично я напомнил рунетчикам, что американцы умудрились гораздо дольше СССР продержаться в Афганистане, с гораздо меньшими потерями и с поддержкой всего западного мира. Но не об это речь.
Несколько лет назад я прочитал, что демократические государства не могут вести серьёзные, кровопролитные войны, из-за того что электорат может запросто проголосовать против правителя втянувшего страну в кровавую бойню.
Но ведь боевые роботы -- как раз и являются способом избежать больших потерь среди своих солдат. На данный момент использование роботов ограничивается нежеланием излишних потерь среди гражданского населения страны где ведутся боевые действия, но в случае возникновения реальной угрозы США эти соображения запросто могут быть отложены в сторону и вражеским солдатам придётся воевать против маленьких, трудно уязвимых роботов, стоимость которых может быть гораздо ниже стоимость подготовки американских солдат, а выживаемость и способность поражать цели гораздо выше.
Таким образом, использование боевых роботов вполне может позволить США длительное время вести боевые действия против достаточно сильных противников -- Ирана, России, Казахстана, Северной Кореи, без крупных потерь своих солдат.
А вы говорите тупые американцы!
Самое интересное заключается в том на что эти доллары затем тратились, приведу слова самого автора:
"На что иностранные получатели долларов их тратили? На два вида покупок: покупали недвижимость в США и акции американских высокотехнологичных компаний
<...>
Так или иначе, но высокотехнологичные компании оказались переоценены. После ряда кризисов их стоимость упала
<...>
одновременно готовится упасть и рынок американской недвижимости.
Получилось, что Америка приобрела много разных товаров, заплатив за них акциями своих компаний и недвижимостью...
<...>
не стоит рассматривать эти события как катастрофу для Америки -- это лишь завершение некой коммерческой операции, в дураках-то остались не американцы, а те кто на чёрный день запас долларов, акций и недвижимости в США."
Напомню, что писалось всё это в 2002 году, *восемь* лет назад, но автору удалось предугадать современный кризис на рынке недвижимости США, повлёкший за собой мировой кризис.
Так что современный американский кризис пошёл на пользу американцам. Заодно Америка сильно нагадила и Европе -- по ней кризис ударил ещё как. А про Россию вообще не стоит говорить, если раньше мы вставали с колен, то теперь с головой окунулись в содержимое деревенского сортира.
Помимо прочего г.Паршнев умудрился предсказать и увеличение напряжённости между США и Ираном.
Это всё навело меня на мысль о ёще одном американском явлении -- боевых роботах. Нет, не трансформерах, а самых настоящих боевых роботах.
Некоторое время назад в блоге г.Стиллавина обсуждалась новость о том что америкосы разработали очередного боевого робота, ну и рунет не подвёл -- сарказм, ирония и прочие способы показать тупость американцев просто расцвели под этой записью. Лично я напомнил рунетчикам, что американцы умудрились гораздо дольше СССР продержаться в Афганистане, с гораздо меньшими потерями и с поддержкой всего западного мира. Но не об это речь.
Несколько лет назад я прочитал, что демократические государства не могут вести серьёзные, кровопролитные войны, из-за того что электорат может запросто проголосовать против правителя втянувшего страну в кровавую бойню.
Но ведь боевые роботы -- как раз и являются способом избежать больших потерь среди своих солдат. На данный момент использование роботов ограничивается нежеланием излишних потерь среди гражданского населения страны где ведутся боевые действия, но в случае возникновения реальной угрозы США эти соображения запросто могут быть отложены в сторону и вражеским солдатам придётся воевать против маленьких, трудно уязвимых роботов, стоимость которых может быть гораздо ниже стоимость подготовки американских солдат, а выживаемость и способность поражать цели гораздо выше.
Таким образом, использование боевых роботов вполне может позволить США длительное время вести боевые действия против достаточно сильных противников -- Ирана, России, Казахстана, Северной Кореи, без крупных потерь своих солдат.
А вы говорите тупые американцы!
Принимаясь за изучение эсперанто стоит иметь в виду, что по большинству вопросов эсперанто отстаёт от других языков, хотя у него и есть несколько преимуществ. Несмотря на то, что эсперанто является самым успешным искусственным языком, он предоставляет меньше возможностей чем английский, испанский или даже русский языки.
Если вы хотите выучить эсперанто для того, чтобы общаться с как можно большим количеством людей, то вам стоит подумать об изучении английского. Если вам не нравится английский, то займитесь испанским, китайским или арабским. Вы сможете общаться с гораздо большим количеством людей на любом из этих языков, чем на эсперанто.
Если вы хотите читать художественную литературу, то английский опять будет вне конкуренции. Мало того, что на английском выходит огромное количество оригинальных книг, так на него ещё и переводят со всех остальных языков. К тому же, читать художественные произведения на иностранном языке, отличном от английского, крайне сложно, так как их авторы частенько злоупотребляют сложными для иностранцев вещами (используют слишком много редко употребляемых слов, сложные грамматические конструкции) и вам постоянно придётся заглядывать в словарь, причём, очень толстый словарь. Как не странно, это относится и к эсперанто. Читая тексты на эсперанто, я постоянно натыкался на слова, которых нет даже в эсперанто-русском словаре содержащем около 30 тысяч слов.
Если вы хотите получить доступ к как можно большему количеству не-художественной печатной информации, то английский будет вне конкуренции, даже испанский или китайский языки рядом не стояли. Английский является языком современной науки и техники, а также бизнеса, путешествий, политики.
На английский переводится практически всё стоящее, как из художественной, так и из не-художественной литературы. Английский язык может удовлетворить практически все запросы читающего человека.
Если вы хотите, чтобы ваши гениальные мысли прочло как можно большее количество людей, то вам стоит освоить либо свой родной язык (если на нём говорит достаточно людей), либо английский (что не так уж сложно), либо испанский, либо эсперанто, либо язык родственный с вашим родным (такие языки очень просто учить).
Если вы хотите много путешествовать, то английский вне конкуренции. Хотя эсперанто тоже может пригодиться -- во многих крупных и средних городах может найтись несколько эсперантистов, с которыми можно будет пообщаться.
Если ты хочешь казаться умным, то эсперанто тебе не подойдёт из-за простоты своей грамматики. Lojban, латынь, санскрит или старославянский лучше подойдут для этой цели. Если тебе нужно что-то очень простое и забавное, то займитесь Toki Pona.
Единственное ради чего стоит учить этот язык -- с помощью эсперанто можно намного легче делиться своими мыслями с людьми, не говорящими на твоём языке. Для того чтобы научиться общаться на форумах, в блогах или переписываться на эсперанто потребуется около полугода, а на английском или испанском *минимум* два-три года.
Для того чтобы научиться грамотно говорить и хорошо писать на эсперанто потребуется полтора-два года, а на английском или испанском минимум лет пять.
К тому же, тебе *никогда* не удастся научиться говорить на иностранном языке также хорошо как это получается у людей говорящих на этом языке с самого детства (за исключением языков состоящих в близком родстве: русский и украинский, татарский и турецкий, испанский и французский). Конечно, гении, способные говорить и писать на иностранных языках лучше чем большинство носителей этих языков, существуют, однако они являются крайне редкими исключениями из этого правила. Ваша же речь всегда будет речью иностранца.
У них всегда будет преимущество перед вами, они всегда смогут ввернуть незнакомое вам слово, построить очень сложную фразу, начать говорить очень быстро, или всё это вместе взятое и вам либо придётся просить их повторить попроще (публично признаться в своей некомпетентности, на что многие не просто пойдут) или утвердительно покачать головой (отказаться от отстаивания своей позиции).
С эсперанто подобной проблемы нет, так как почти все люди, говорящие на нём, учили его как второй язык. При этом, большинство эсперантистов -- читатели, а не писатели, так что если вы будете писать хоть что-то заслуживающее интереса, то читатели появятся. К тому же, некоторые эсперантисты, может быть, переведут вашу писанину на свой родной язык, только ради того, чтобы поставить под переводом строчку "переведено с эсперанто", тем самым поддержав его известность.
А если вы прочтёте пару-тройку *англоязычных* статей/книг/эссе про то как писать, то вам цены не будет (начните с "The Elements of Style William Strunk, Jr.).
Эсперанто вполне стоит того, чтобы его выучить, в том случае если вас не смущает небольшой размер целевой аудитории и вам нравится общаться на темы близкие эсперантистам.
Набрёл на заметку посвящённую Русской Операционной Системе на http://slashdot.org, как всегда дискуссия под заметкой оказалась интереснее статьи, тем более, что следующая статья на эту тему говорит, что Русской ОСи не будет.
Ниже привожу компиляцию некоторых юмористических комментариев в подобие связанного диалога (оригиналы приводятся ниже):
-- А разве их(русская) операционная система не называется Коммунизм?
-- Нет, она называется Леникс.
--Леникс была бета-версией, которую сменили Сталиникс, Хрущиникс, и т.д. Больше не поддерживается, но до сих пор обладает некоторым количеством твердолобых (die hard) фанатов.
-- Современное доминирование Путиникса отражает решимость "обнять и расшириться" аналогичной решимости разработчиков Сталиникса, но с большим количеством маркетингово лоска.
-- Мне кажется, что Троцкиникс была популярна некоторое время, но была заброшена после того, как стало ясно, что она легко поддаётся хаку. (Троцкий был зарублен топором, а по английски хакать и рубить топором обозначаются одним глаголом -- to hack, хотя кому я это объясняю?)
-- Будет ли она написана на C..C..C Plus?
-- Неа. Она будет разработана на .NIET.
Оригиналы постов с указанием авторов:
--Isn't their National Operating System called Communism? (http://slashdot.org/~140Mandak262Jamuna)
--"No, it's called Lenix." (http://slashdot.org/~CrimsonScythe)
--Lenix was a beta version, superseded by Stalix, Kruschix, etc. These are no longer maintained but have a few die hard fanbois. Current dominance of Putix reflects a determination to "embrace and extend" similar to that of the Stalix developers, but with much more polished marketing. Competing distros such as Tsarix and Democratix serve niche markets. (http://slashdot.org/~couchslug)
--I believe Trotskyux was popular for a while, but discontinued after being shown to be susceptible to hacking.
--Will it be written in C..C..C Plus? (http://slashdot.org/~canuck08)
--Nope. It will be developed in .NIET (http://slashdot.org/~Akral)
На создание этого обзора меня надоумил перевод очерка Проблемы Открытого Кода Марка Тарвера (Mark Tarver) опубликованный в блоге svartestare. И я решил немного расширить список свободных программ, которые были созданы или создаются на чьи-то деньги.
И начну я с Java, флагмана современного СПО.
-- Java является классическим примером коммерческого СПО, подавляющая часть кода написана программистами работающими в Sun, IBM и получающими за свою работу деньги, это относится как и к самой платформе, так и к средствам разработки, и вспомогательным программам (Hibernate, GlassFish, NetBeans).
-- Eclips -- первоначально разрабатывался IBM как проприетарный продукт в качестве преемника семейства инструментов VisualAge.
-- TomCat -- с участием программистов Sun (ITСпец #07 2007 "Золотая Рыбка GlassFish)
Программы для обработки текста:
-- Пакет офисных приложений Open Office -- начинался как коммерческий продукт одной немецкой компании, затем был выкуплен SUN, которая некоторое время пыталась продвигать его на рынке в качестве проприетарного продукта под названием StarOffice, но MS Office оказался конкурентноспособнее и SUN сделала Open Office открытым и свободным продуктом.
-- Текстовый редактор GNU Emacs был разработан в MIT AI Lab на деньги американских налогоплательщиков и был лишь немного исправлен и доработан Столманом.
Операционные системы:
-- Linux -- клон ОС Unix, которая в свою очередь была разработана в Bell Labs. И до того как множество крупных компаний взялось за его развитие, Linux являлся кучей плохо написанного и плохо работающего кода. На данный момент над Линухой работают сотни, если не тысячи, программистов из крупных компаний.
-- FreeBSD была разработана в Калифорнийском Университете в Беркли (University of California, Berkeley).
Языки программирования:
-- C -- разработан Dennis Ritchie во время его работы в Bell Labs.
-- C++ -- разработан Bjarne Stroustrup во время его работы в Bell Labs.
-- Python был разработан Guido van Rossum во время его работы в National Research Institute for Mathematics and Computer Science (Нидерланды), в Corporation for National Research Initiatives (CNRI), BeOpen и Digital Creations (Zope), то есть он тоже получал зарплату за разработку этого языка программирования, и не он один.
-- Lisp -- был придуман John McCarthy во время его работы в Massachusetts Institute of Technology (MIT), а в дальнейшем разрабатывался в целой куче различных университетов и коммерческих компаний, в том числе и в MIT AI Lab.
-- SBCL -- главная свободная реализация Common Lisp является форком от CMU CL, который в свою очередь разрабатывался на деньги DAPRA.
-- Scheme -- главная реализация этого языка программирования была создана и поддерживается в MIT.
-- Smalltalk -- разрабатывался на деньги (D)APRA и Xerox PARC.
-- Tcl -- был разработан John Ousterhout во время его работы в Калифорнийском Университете.
Базы данных:
-- MySQL -- компания разработавшая эту базу данных, продаёт её под проприетарной лицензией тем кто хочет использовать её в своих приложениях, но не хочет выпускать их под GNU GPL.
-- PostgreSQL -- является продолжением коммерческой базы данных под названием Ingres. Разрабатывается в Калифорнийском Университете, людьми получающими за это зарплату.
Другое:
-- Трёхмерный шутер Open Arena -- клон Quake 3 разработанный на основе движка от ID Software. OA создана в стилистике Q3 и не несёт ничего оригинального, большинство других свободных игры также являются клонами проприетарных игр.
-- Браузер Mozilla FireFox -- это дальнейшее развитие кода созданного в Netscape и выпущенного под свободной лицензией, после того как Netscape потеряла всякую надежду отвоевать хоть немного рынка у Microsoft. На данный момент над этим проектом работают профессиональные программисты получающие за это зарплату.
Из всего сказанного выше можно сделать один простой вывод -- большая часть *успешного* Свободного Программного Обеспечения С Открытым Кодом создаётся на чьи-то деньги профессиональными программистами, а не самоорганизующимися добровольцами, конечно из этого правила есть исключения, например сервер Apache. Многое из СПО создавалось либо в качестве коммерческого ПО, либо в качестве исследовательских проектов.
В своём замечательном очерке Роскошь Невежества: ужасы ОПО (The Luxury of Ignorance: An Open-Source Horror Story) Эрик Рэймонд (Eric Raymond) описывает злоключения гипотетической тёти Тилли пытающейся настроить принтер (Common Unix Printing System) в Unix с помощью некой ГУИ утилиты.
Эти злоключения дают точный и верный ответ на тему того, почему *никсы не популярны среди не-технарей -- всё либо слишком сложно, чтобы в этом можно было быстро разобраться (текстовые прибамбасы), либо слишком коряво чтобы работать (ГУИ штучки).
Эта проблема ОПО существует из-за того, что разработчики ОПО в основном занимаются тем, что интересно им, а не тем что нужно пользователям. Разработчики ОПО любят вкусные, сочные и сложные проблемы и не любят заниматься простыми, но однообразными задачами. Поэтому у большинства свободных программ нет хороших самоучителей, учебников, справочной системы, удобных программ установки, хороших информативных сайтов, красивого дизайна, а ведь именно эта "мишура" и привлекает пользователей.
Если вы хотите, чтобы ваш открытый проект стал успешным занимайтесь не только решением главной задачи, но и вспомогательной деятельностью, или убедите других заняться ею -- создайте сообщество разработчиков. Почти все успешные открытые проекты начинались одним-двумя хакерами, а поддерживаются сообществами разработчиков. Небольшое количество основателей даёт возможность разработать ядро проекта, не отвлекаясь на решение целой кучи политических вопросов, а сообщество развивает проект и занимается вспомогательной деятельностью.
Таким образом получается что, открытый проект -- это не столько написание кода, сколько создание и поддержание сообщества разработчиков. И только сообщество может решить Главную Проблему ОПО.
Начало перевода этого очерка ищи в предыдущем посте.
6 Библиотеки
Конечно, крайностью в краткости это иметь уже написанную программу и просто вызвать её. И это подводит нас к тому, что, по моему мнению, будет становиться всё более и более важной чертой ЯП: библиотечные функции. Перл выигрывает потому что он обладает большой библиотекой функций для работы со строками. Этот класс библиотечных функций наиболее важен для одноразовых программ, которые пишутся для преобразования или извлечения данных. Вероятно, многие программы, написанные на Перле, начинались как пара библиотечных вызовов сведённых вместе.
Я думаю, что большая часть прорывов, которые произойдут в сфере ЯП будут иметь отношение к библиотечным функциям. Я думаю, что ЯП будущего будут располагать библиотеками, разработанными также тщательно, как и сам язык. Проектирование ЯП не будет сводится к только к тому, сделать ли твой ЯП строго или слабо типизированным, объектноориентированным или функциональным, или что там ещё, но прежде всего к тому как спроектировать великие библиотеки. Разработчики языков, любящие подумать о том как разработать систему типов, могут содрогнуться при мысли об этом. Это почти тоже самое как писать приложения! Слишком плохо. Языки для программистов, а библиотеки это то, в чём программисты нуждаются.
Очень трудно разработать хорошие библиотеки. Дело не только в написание кучи кода. Как только библиотека становится слишком большой, то для написания нужной функции самому иногда требует меньшего времени чем на её поиски. Библиотеки должны быть разработаны, используя маленький набор ортодоксальных операторов, так же как и сам язык. Программист должен быть способен догадаться какой библиотечный вызов сделает то, что ему требуется.
Библиотеки это то, в чём Common Lisp испытывает сильный недостаток. Имеются только рудиментарные библиотеки для манипуляции строками, и практически ничего для общения с операционной системой. Исторически, Common Lisp пытался делать вид, что операционных систем не существовует. А из-за того, что ты не можешь разговаривать с операционной системой, ты навряд ли будешь способен написать серьёзную программу, используя только встроенные в Common Lisp операторы. Тебе нужно применять некоторые хаки, специфичные для реализации языка, а на практике это обычно не даёт всего того, что тебе надо. Хакеры бы были гораздо лучшего мнения о Lisp, если бы Common Lisp обладал мощными библиотеками для обработки строк и лучшей поддержкой ОС.
7 Синтаксис
Может ли язык с синтаксисом Lisp, или более точно, отсутствием синтаксиса стать популярным? Я не знаю ответа на этот вопрос. Я *думаю*, что синтаксис не является главной причиной почему Lisp не популярен на данный момент не является популярным. У КЛ есть проблемы серьёзнее чем незнакомый синтаксис. Я знаю некоторых программистов, которые комфортно себя чувствуют с префиксным синтаксисом, но всё равно используют по умолчанию Перл, потому что он обладает мощными библиотеками обработки строк и может говорить с ОС.
Существуют две возможные проблемы с префиксной нотацией: то, что программисты не знакомы с ней и то, что она недостаточно насыщена. В мире Lisp принято считать, что первая проблема является настоящей. Я не так уверен. Да, префиксная нотация заставляет обычного программиста паниковать. Но я не думаю, что мнение обычного программиста имеет значение. Языки становятся популярными или непопулярными в связи с тем, что хакеры-эксперты думают на этот счёт, и я думаю, что хакеры-эксперты способны иметь дело с префиксной нотацией. Синтаксис Перл может быть очень непонятным, но это не встало на пути у популярности Перл. Это, как ничто другое способствовало развитию культа Перл.
Размытость префиксной нотации является более серьёзной проблемой. Для хакера эксперта это действительно проблема. Никто не хочет писать (aref a x y) когда можно написать a[x,y].
8 Эффективность
Каждый это знает, что хороший язык, должен генерировать быстрый код. Однако, я не думаю, что на практике скорость кода зависит главным образом от дизайна языка. Давным-давно Кнут отметил, что скорость имеет значение только в случае с некоторыми из критических бутылочных горлышек. И с тех пор многие программисты заметили, что эти бутылочные горлышки находятся не там, где ты думаешь.
Так что, на практике, использование хорошего профайлера является единственным способом получить быстрый код, а не, скажем, сделать язык строго-типизированным. Тебе не требуется знать тип каждого аргумента каждого вызова в программе. Что тебе нужно, так это иметь возможность указывать тип аргументов в этих бутылочных горлышках. Но главное, ты должен быть способным находить где эти бутылочные горлышки находятся.
Люди часто жалуются, что с Lisp трудно определить что именно является затратным. Это может быть правдой. Это также может быть неизбежным, если вы желаете получить очень абстрактный язык. И в любом случае я думаю, что хорошее профилирование сделает многое для решения этой проблемы: вы очень быстро узнаете, что был затратной частью.
Частью этой проблемы является социальная составляющая. Разработчики языков любят писать быстрые компиляторы. Это то, как они измеряют свои способности. Они считают профайлер неким дополнением, в лучшем случае. Но на практике, хороших профайлер может сделать больше для того, чтобы улучшить быстродействие реальных программ написанных на этом языке, чем компилятор, который генерирует быстрый код. Опять же, в данном случае разработчики языков не соприкасаются со своими пользователями. Они делают действительно хорошую работу решая немного неправильную задачу.
Активный профайлер может быть хорошей идеей -- всучить данные по быстродействию программисту вместо того, чтобы ждать пока он сам придёт и спросит. Например, редактор может подсвечивать бутылочные горлышки красным, когда программист редактирует исходный код. Другим подходом будет представление каким-нибудь образом того, что происходит в исполняющихся программах. Это будет действительно большой победой для серверных приложений, где есть множество проблем, за которыми тебе нужно следить. Активных профайлер мог бы графически показывать, что происходит в памяти в то время как программа исполняется, или даже издавать звуки для того, чтобы сообщить о том, что что-то произошло.
Звук может быть хорошим решением проблемы. В одном месте, где я работал, у нас была большая панель со цифирблатами, которые показывали, что происходило с нашими веб-серверами. Стрелки двигались маленькими сервомоторами, производящими лёгкий шум, когда они крутились. Я не мог видеть доску из-за своего стола, но я обнаружил, что я мог по звуку сразуже сказать, когда на сервере возникала проблема.
Создание профайлера, который будет автоматически определять неэффективные алгоритмы, может быть вполне возможным. Я не удивлюсь, что определённые шаблоны доступа к памяти окажутся признаком плохих алгоритмов. Если бы существовал маленький парень, бегающий внутри компьютера, исполняя наши программы, то его история была бы такой же длинной и жалобной, как и у служащего федерального правительства. У меня часто возникает ощущение, что я заставляю процессор бегать по кругу, но у меня не было хорошего способа посмотреть на то, что происходит.
Несколько лиспов сейчас компилируются в байт код, который затем исполняется интерпретатором. Это обычно делается для того, чтобы сделать упростить портирования реализации языка, но это может быть удобной особенностью языка. Сделать байт код официальной частью языка, и позволить программисту использовать inline байт код в бутылочных горлышках. Тогда такая оптимизация так же будет пригодной к портированию.
Природа скорости, как она воспринимается конечным пользователем, может меняться. С увеличением числа серверных приложений, может оказаться, что всё большее число программ являются зависимыми от ввода-вывода. Быстрый ввод-вывод может окупить себя. Язык может помочь простыми, прямыми мерами на подобии простых, быстрых, форматированных функций вывода, а так же глубокими структурными изменениями наподобие кэширования и постоянных (persistent) объектов.
Пользователи заинтересованы во времени отклика. Но другим тип эффективности становится всё более и более важным: количество пользователей на один процессор, которое вы можете одновременно поддерживать. Многие интересные приложения, которые будут написаны в ближайшем будущем, будут серверными, и количество пользователей на один сервер является критическим вопросом для каждого, кто размещает подобные приложения. In the capital cost of a business offering a server-based application, this is the divisor.
В течение лет, эффективность значила не много в большинстве приложений для конечного пользователя. Разработчики могли предположить, что на столах пользователей будет находиться процессор всё более возрастающей мощности. И, в соответствие с законом Паркинсона, ПО потребляло все имеющиеся ресурсы. Это изменится с приходом серверных приложений. В этом мире ПО и будет поставляться вместе с оборудованием. Для компаний, которые предлагают серверные приложения, будет очень важно то, сколько пользователей может обслужит один сервер.
В некоторых приложениях, процессор будет ограничивающим фактором, а скорость выполнения будет иметь наибольшее значение с точки зрения оптимизации. Но часто ограничением будет объём памяти: количество пользователей будет определяться количеством памяти, которое требуется для данных каждого пользователя. Язык может помочь и в этом случае. Хорошая поддержка потоков позволит пользователям разделять одну кучу. Большим подспорьем будут постоянные (persistent) объекты, а также поддержка "ленивой загрузки" на уровне языка.
9 Время
Последний ингредиент в котором нуждается популярный язык -- это время. Никто не захочет писать программы на языке, который может исчезнуть, как многие ЯП. Так что многие хакеры предпочтут подождать пару лет перед тем, как даже начинать думать о том, стоит ли его использовать.
Изобретатели удивительных новых вещей очень часто бывают удивлены, когда узнают об этом, но тебе требуется время для того, чтобы донести сообщение!! до людей. Один мой друг редко делает то, о чём его попросили в первый раз. Он знает, что люди иногда просят о вещах, которые им не нужны. Для того, чтобы исключить потерю его времени, он ждёт, чтобы его попросили сделать это в третий или четвёртый раз; к этому времени, те, кто просят, могут быть весьма раздражёнными, но, по крайней мере, они действительно хотят то, о чём они просят.
Большинство людей научились применять подобный фильтр по отношению к новшествам, о которых они слышали. Они даже не начинают уделять этому внимание до тех пор пока не услышат об этом в десятый раз. У них есть прекрасное оправдание: большинство горячего и нового чего-бы-то-ни-было оказывается простой потерей времени, и в конце концов пропадает. Отложив изучение VRML, я вообще избежал его изучения.
Так что, любой человек изобретающий что-то новое должен быть готов к тому, что ему придётся повторять своё сообщение в течение многих лет, до тех пор, пока люди не начнут воспринимать его. Мы написали то, что, насколько я знаю, оказалось первым веб-приложением и у нас ушли годы на то, что донести до людей то, что им не надо его загружать. Это не говорит о том, что они глупые. Они просто заставляли нас крутиться.
Хорошая новость заключается в том, что повторение решает эту проблему. Всё что вам нужно -- это продолжать повторять свою историю и, в конце концов, люди начнут слышать. Дело не в том, что люди замечают, что вы здесь и обращают на вас внимание, а в том, что они замечают то, что вы ещё здесь.
Правдой является и то, что много времени занимает набор критической массы. Большинство технологий эволюционируют в течение длительного времени, даже после того, как они были запущены -- ЯП в особенности. Ничего не может быть лучше для технологии, чем несколько лет использования только небольшим количеством early adopters. Early adopters являются изощрёнными и требовательными, и быстро выявляют оставшиеся недостатки в твоей технологии. Когда у тебя всего несколько пользователей, ты можешь быть в тесном контакте со всеми ними. И early adopters прощают тебя, когда ты улутшаешь твою систему, даже если это и вызывает некоторые сбои.
Существуют два способа представить новые технологии: метод органического роста, и метод большого взрыва. Примерами метода органического роста являются "выросшие из коротких штанишек" (seat-of-the-pants) недофинансированные гаражные стартапы. Пара парней, работающих в темноте, разрабатывает некую новую технологию. Они запускают её безо всякого маркетинга и, в начале, у них есть только несколько (фантастически преданных) пользователей. Они продолжают улучшать технологию, а в это время количество пользователей прирастает благодаря сплетням и слухам. И они уже большие ещё до того как они узнают об этом.
Примером другого подхода, метода большого взрыва, может служить поддерживаемые венчурным капиталом (VC), стартапы. Они бросаются разрабатывать продукт, запускают его с огромной рекламной кампанией, и сразуже (они надеются) заполучают большую пользовательскую базу.
В основном, гаражные ребята завидуют ребятам Большого Взрыва. Ребята Большого Взрыва гладкие, уверенные и VC уважает их. Они могут позволить всё самое лучшее, а ПР кампании, окружающие запуск, делают их знаменитостями, в качестве побочного эффекта. Ребята Органического роста, сидя в своих гаражах, чувствуют себя бедными и ни кем не любимыми. Но всё же, я думаю, что они часто ошибаются жалея себя. Кажется, что Органический Рост порождает лучшие технологии и более богатых основателей, чем метод Большого Взрыва. Если вы посмотрите на доминирующие сегодня технологии, то вы увидите, что большинство из них развивались органически.
Этот шаблон применим не только к компаниям. Ты также обнаружишь его и в спонсируемых исследованиях. Multics и Common Lisp были проектами Большого Взрыва, а Unix и MacLisp были проектами Органического Роста.
10 Перепланировка
"Лучший способ писать -- это переписывать", написал E. B. White. Каждый хороший писатель знает это, и это хорошо для ПО. Наиболее важная часть планирования -- это перепланировка. ЯП, в особенности, перепланируются не достаточно.
Для того, чтобы писать хорошее ПО, ты должен держать в голове две противоположные идеи. Тебе требуется наивная вера молодого хакера в твои способности, и в тоже время, скептицизм ветерана. Ты должен быть способен думать о том, насколько это может быть сложно (http://www.trevorblackwell.com/) одной частью твоего мозга, пока другая думает, что это никогда не заработает (http://www.pdos.lcs.mit.edu/~rtm/).
Хитрость заключается в том, чтобы осознать, что здесь нет никакого противоречия. Ты желаешь быть настроенным оптимистически и пессимистически по отношению к двум совершенно разным вещам. Ты должен быть оптимистом касательно возможности решения задачи, но скептиком касательно ценности какого бы то ни было решения, которое у тебя есть.
Люди делающие хорошую работу часто думают, что всё над чем они работают -- отстой. Другие видят, что то, что они делают полно изумительных вещей, но создатель полон беспокойства. Этот не совпадение: именно беспокойство делает работу стоящей.
Если ты сможешь сохранять равновесие между надеждой и беспокойством, то они будут тянуть твой проект вперёд, так же как две твои ноги заставляют велосипед двигаться вперёд. Во время первой фазы работы двух-фазового инновационного двигателя, ты неистово работаешь над некой проблемой, вдохновлённый твоей уверенностью в том, что ты сможешь разрешить её. Во время второй фазы, ты смотришь на то, что ты сделал под холодным утренним светом, и ясно видишь все недостатки. Но пока твой критический настрой не перевесит твою надежду, ты будешь способен смотреть на твою возможно незавершенную систему, и думать о том, насколько трудно будет одолеть остаток пути, тем самым продолжая цикл.
Сохранять эти две силы в равновесии может быть непростой задачей. В молодых хакерах оптимизм преобладает. Они делают нечто, что, по их мнению, -- супер, и никогда не улучшают этого. В старых хакерах скептицизм преобладает, и они даже не осмелятся взяться за амбициозные проекты.
Хорошо всё то, что помогает вам поддерживать цикл перепланировки. Можно снова и снова переписывать прозу, пока ты не будешь счастлив от того, что у тебя получилось. Но ПО, как правило, не перепланируется в достаточной степени. У прозы есть читатели, а у ПО -- *пользователи*. Если писатель перепишет очерк, то люди, читавшие его старую версию, вряд ли будут жаловаться на то, что ход их мыслей был нарушен вновь введёными несовместимостями.
Пользователи похожи на обоюдоострый клинок. Они могут помочь тебе улучшить твой язык, но они также могут удерживать тебя от его улучшения. Так что тщательно выбирай своих пользователей, и медленно наращивай их количество. Пользователи подобны оптимизации: промедление будет мудрым курсом. Как правило, внося изменения, ты можешь зайти дальше чем ты думаешь. Введение изменений подобно снятию повязки: боль превращается в память практически в тот же самый момент, когда ты её ощутил.
Всем известно, что разработка языка комитетом не является хорошей идеей. Комитеты порождают плохой дизайн. Но я думаю, что главная опасность исходящая от комитетов заключается в том, что они вмешиваются в перепланировку. Требуется так много работы для внесения изменений, что никто не хочет этим заниматься. Существует тенденция заключающаяся в том, что всё то, что порождается комитетом остаётся неизменным, даже если большинству членов это не нравится.
Это происходит даже в случае если комитет состоит из двух человек. Особенно часто это происходит в случае с интерфейсами между частями ПО, написанными двумя различными людьми. Для того, чтобы изменить интерфейс сразу оба должны согласиться изменить его. И поэтому интерфейсы обычно вообще не меняются, что является проблемой, так как интерфейсы -- это наиболее ad hoc части любой системы.
А смысл следующего параграфа я просто не понял:
One solution here might be to design systems so that interfaces are horizontal instead of vertical-- so that modules are always vertically stacked strata of abstraction. Then the interface will tend to be owned by one of them. The lower of two levels will either be a language in which the upper is written, in which case the lower level will own the interface, or it will be a slave, in which case the interface can be dictated by the upper level.
11 Lisp
Всё это ведёт к тому, что для нового Lisp'а надежда есть. Есть надежда для любого языка, который даёт хакерам то, что они хотят, включая Lisp. Я думаю, что мы сделали ошибку думая, что хакеры отвернулись от Lisp'а из-за его необычности. Эта успокаивающая иллюзия может не дать нам увидеть настоящую проблему с Lisp, или, по крайней мере, Common Lisp, заключающуюся в том, что его обламывает делать то, что хакеры хотят делать. Языку хакеров требуются мощные библиотеки и что-нибудь, что можно хакнуть. У КЛ нет ни того, ни другого. Язык хакеров краток и пригоден к хаку. А КЛ нет.
Хорошая новость заключается в том, что Lisp сам по себе не отстой, а КЛ -- отстой. Если мы сможем разработать новый Lisp, который будет настоящим хакерским языком, то, как мне кажется, хакеры будут его использовать. Они будут использовать любой язык, который делает своё дело. Всё что мы должны сделать -- это обеспечить Lisp делает какуюнибудь важную работу лучше чем другие языки.
История предлагает воодушевляющие примеры. С течением времени, успешные новые языки заимствуют всё больше и больше особенностей Lisp. Осталось не так много того, что вы можете скопировать, до того как язык который вы создали превратится в Lisp. Последний горячий язык, Питон, разбавил Lisp инфиксным синтаксисом и отсутствием макросов. Новый Lisp будет естественным шагом в этом направлении.
Иногда я думаю, что называть его улучшенной версией Питона будет хорошим маркетинговым трюком. Это звучит клёвее чем Lisp. Для многих людей, Lisp -- это медленный язык для ИИ с большим количеством скобок. Официальная биография Fritz Kunze старательно избегает употребления L-слова. Однако я считаю, что мы не должны бояться называть новый Lisp Lisp'ом. У многих из лучших хакеров всё ещё осталось скрытое уважение к Lisp -- например у тех, кто видит 6.001 и понимает. А они являются именно теми пользователями, которых тебе нужно завоевать.
В "Как стать хакером" Эрик Реймонд ("How to Become a Hacker," Eric Raymond) описывает Lisp как что-то подобное Латыни или Греческому -- язык, который тебе следует выучить в качестве упражнения для интеллекта, даже если ты не будешь его использовать:
Lisp стоит изучения ради того опыта глубокого просветления, который ты приобретёшь, когда выучишь его; этот опыт сделает тебя лучшим программистом до конца твоих дней, даже если ты не будешь использовать Lisp в больших количествах.
Если бы я не знал Lisp, чтение этого отрывка заставило бы меня задаться некоторыми вопросами. Язык, который сделает меня лучшим программистом, если это означает хоть что-то, то это означает, что этот язык должен лучше подходить для программирования. И это именно то, что говорит Эрик.
Я думаю, что пока эта идея крутится по близости, хакеры будут достаточно восприимчивы к новому Lisp'у, даже если он будет называться Lisp'ом. Но этот Lisp должен быть хакерским языком, как классические Lisp'ы 1970-ых. Он должен быть насыщенным, простым и пригодным к хаку. И он должен обладать мощными библиотеками позволяющими хакерам делать то, что они хотят делать.
Говоря о библиотеках, то, по моему мнению, нам есть где развернуться для того, чтобы побить Перл и Питон на их собственной территории. Многие из новых приложений которые должны быть написаны в ближайшие годы будут серверными приложениями. Нет причин по которым Lisp не должен обладать такими же хорошими библиотеками по обработке строк как Перл, и если этот новый Lisp будет обладать мощными библиотеками для серверных приложений, он сможет стать очень популярным. Хорошие хакеры не отворачивают носы от нового инструмента, который позволит им решать трудные проблемы несколькими вызовами библиотечных функций. Помни, хакеры ленивы.
Поддержка серверных приложений на уровне языка стала бы ещё большей победой. Например, явная поддержка многопользовательских программ, или обозначение принадлежности данных с помощью тегов.
Серверные приложения также дают ответ на вопрос о том, что именно будет хакаться с использованием этого нового Lisp'а. Не повредит сделать Lisp более подходящим в качестве языка скриптов для Unix. (Сложно будет сделать его ещё менее подходящим.) Но я думаю, что лучше всего будет следовать примеру Tcl, и поставлять этот Lisp вместе с готовой системой для поддержки серверных приложений. Lisp, из-за своей природы естественно подходит для серверных приложений. Lexical closures provide a way to get the effect of subroutines when the ui is just a series of web pages. S-выражения легко вписываются в html, а макросы хороши для его генерации. Есть потребность в лучших инструментах для написания серверных приложений, и есть потребность в новом Lisp'е, и они будут прекрасно работать сообща/вместе.
12 Язык-Мечта
Подводя итог, опишем язык мечты для хакеров. Язык-мечта прекрасен, чист и краток. Он обладает интерактивным интерфейсом, который быстро загружается. Ты можешь писать программы для решения обычных задач используя очень мало кода. Практически весь код, который ты пишешь, является специфическим для твоего приложения. Всё остальное должно быть уже сделано за тебя.
Синтаксис языка должен быть как можно более кратким. Тебе не должно требоваться печатать ненужный символ, или даже часто использовать клавишу Шифт.
Используя большие абстракции ты можешь написать первую версию программы очень быстро. Позже, когда тебе захочется оптимизировать, у тебя под рукой будет хороший профайлер, который укажет тебе на чём тебе нужно сфокусировать внимание. Ты можешь сделать внутренние циклы ослепительно быстрыми, используя inline байт код, если тебе это потребуется.
Имеется большое количество хороших примеров на которых можно учиться, и язык до такой степени интуитивно понятен, что ты можешь научиться использовать его за пару минут читая примеры. Тебе не потребуется часто заглядывать в руководство. Руководство тонкое и в нём мало предупреждений и оговорок.
Язык обладает маленьким ядром, и мощными, крайне ортодоксальными библиотеками, разработанные с такой же тщательностью, что и ядро языка. Все библиотеки хорошо работают вместе; всё в языке подходит как части в сложной фото-камере. Ничего не объявлено устаревшим или оставленно для совместимости. Исходный код всех библиотек доступен сразу. Легко общаться с ОС и приложениями написанными на других языках.
Язык состоит из нескольких слоёв. Высоко-уровневые абстракции прозрачно строятся из низко-уровневых абстракций, к которым ты можешь получить доступ, если захочешь.
От тебя ничто не спрятано из того, что не должно быть спрятанным. Язык предлагает абстракции только в качестве способа сэкономить твоё время, а не в качестве способа указывать тебе, что ты должен делать. Фактически, язык убеждает тебя стать равным участником в его разработке. Ты можешь менять всё в нём, включая даже синтаксис, и всё, что ты пишешь, насколько это возможно, имеет тот же статус, что и то, что было предопределено.
//************************************** *******
Примечания
[1] Макросы, очень похожие на современное представление о них, были предложены Тимоти Хартом (Timothy Hart) в 1964 году, через два года после того как Lisp 1.5 был выпущен. Изначально, недоставало способов избежать variable capture и multiple evaluation; Hart's examples are subject to both.
[2] В "When the Air Hits Your Brain", нейрохирург Франк Вертосик (Frank Vertosick) приводит разговор в котором его chief resident, Гари, говорит о различие между хирургами и терапевтами ("вшами"):
Гари и я заказали большую пиццу и нашли открытую кабинку. Главный зажёг сигарету. "Посмотри на этих проклятых вшей, тараторят о каких-то болезнях, которые они повстречают раз в жизни. Вот в чём проблема со вшами, им нравится исключительно странные вещи. Они ненавидят то, чем они зарабатывают себе на хлеб и масло. Вот в чём разница между нами и трахаными вшами. Видишь, мы любим большие сочные lumbar disc herniations, а они ненавидят гипертонию..."
Мне Трудно думать об lumbar disc herniations как о чём-то сочном (кроме как буквально). Но всё же, я думаю, что знаю, что они имеют в виду. Мне часто приходилось ловить больших сочных жуков(bug -- жук). Непрограммисту может быть трудно представить, что можно получать удовольствие от работы с жуками. Конечно, было бы лучше, если всё просто работало. И это так, с одной стороны. И всё же, в выслеживании определённых типов жуков присутствует мрачное удовлетворение.
6 Библиотеки
Конечно, крайностью в краткости это иметь уже написанную программу и просто вызвать её. И это подводит нас к тому, что, по моему мнению, будет становиться всё более и более важной чертой ЯП: библиотечные функции. Перл выигрывает потому что он обладает большой библиотекой функций для работы со строками. Этот класс библиотечных функций наиболее важен для одноразовых программ, которые пишутся для преобразования или извлечения данных. Вероятно, многие программы, написанные на Перле, начинались как пара библиотечных вызовов сведённых вместе.
Я думаю, что большая часть прорывов, которые произойдут в сфере ЯП будут иметь отношение к библиотечным функциям. Я думаю, что ЯП будущего будут располагать библиотеками, разработанными также тщательно, как и сам язык. Проектирование ЯП не будет сводится к только к тому, сделать ли твой ЯП строго или слабо типизированным, объектноориентированным или функциональным, или что там ещё, но прежде всего к тому как спроектировать великие библиотеки. Разработчики языков, любящие подумать о том как разработать систему типов, могут содрогнуться при мысли об этом. Это почти тоже самое как писать приложения! Слишком плохо. Языки для программистов, а библиотеки это то, в чём программисты нуждаются.
Очень трудно разработать хорошие библиотеки. Дело не только в написание кучи кода. Как только библиотека становится слишком большой, то для написания нужной функции самому иногда требует меньшего времени чем на её поиски. Библиотеки должны быть разработаны, используя маленький набор ортодоксальных операторов, так же как и сам язык. Программист должен быть способен догадаться какой библиотечный вызов сделает то, что ему требуется.
Библиотеки это то, в чём Common Lisp испытывает сильный недостаток. Имеются только рудиментарные библиотеки для манипуляции строками, и практически ничего для общения с операционной системой. Исторически, Common Lisp пытался делать вид, что операционных систем не существовует. А из-за того, что ты не можешь разговаривать с операционной системой, ты навряд ли будешь способен написать серьёзную программу, используя только встроенные в Common Lisp операторы. Тебе нужно применять некоторые хаки, специфичные для реализации языка, а на практике это обычно не даёт всего того, что тебе надо. Хакеры бы были гораздо лучшего мнения о Lisp, если бы Common Lisp обладал мощными библиотеками для обработки строк и лучшей поддержкой ОС.
7 Синтаксис
Может ли язык с синтаксисом Lisp, или более точно, отсутствием синтаксиса стать популярным? Я не знаю ответа на этот вопрос. Я *думаю*, что синтаксис не является главной причиной почему Lisp не популярен на данный момент не является популярным. У КЛ есть проблемы серьёзнее чем незнакомый синтаксис. Я знаю некоторых программистов, которые комфортно себя чувствуют с префиксным синтаксисом, но всё равно используют по умолчанию Перл, потому что он обладает мощными библиотеками обработки строк и может говорить с ОС.
Существуют две возможные проблемы с префиксной нотацией: то, что программисты не знакомы с ней и то, что она недостаточно насыщена. В мире Lisp принято считать, что первая проблема является настоящей. Я не так уверен. Да, префиксная нотация заставляет обычного программиста паниковать. Но я не думаю, что мнение обычного программиста имеет значение. Языки становятся популярными или непопулярными в связи с тем, что хакеры-эксперты думают на этот счёт, и я думаю, что хакеры-эксперты способны иметь дело с префиксной нотацией. Синтаксис Перл может быть очень непонятным, но это не встало на пути у популярности Перл. Это, как ничто другое способствовало развитию культа Перл.
Размытость префиксной нотации является более серьёзной проблемой. Для хакера эксперта это действительно проблема. Никто не хочет писать (aref a x y) когда можно написать a[x,y].
8 Эффективность
Каждый это знает, что хороший язык, должен генерировать быстрый код. Однако, я не думаю, что на практике скорость кода зависит главным образом от дизайна языка. Давным-давно Кнут отметил, что скорость имеет значение только в случае с некоторыми из критических бутылочных горлышек. И с тех пор многие программисты заметили, что эти бутылочные горлышки находятся не там, где ты думаешь.
Так что, на практике, использование хорошего профайлера является единственным способом получить быстрый код, а не, скажем, сделать язык строго-типизированным. Тебе не требуется знать тип каждого аргумента каждого вызова в программе. Что тебе нужно, так это иметь возможность указывать тип аргументов в этих бутылочных горлышках. Но главное, ты должен быть способным находить где эти бутылочные горлышки находятся.
Люди часто жалуются, что с Lisp трудно определить что именно является затратным. Это может быть правдой. Это также может быть неизбежным, если вы желаете получить очень абстрактный язык. И в любом случае я думаю, что хорошее профилирование сделает многое для решения этой проблемы: вы очень быстро узнаете, что был затратной частью.
Частью этой проблемы является социальная составляющая. Разработчики языков любят писать быстрые компиляторы. Это то, как они измеряют свои способности. Они считают профайлер неким дополнением, в лучшем случае. Но на практике, хороших профайлер может сделать больше для того, чтобы улучшить быстродействие реальных программ написанных на этом языке, чем компилятор, который генерирует быстрый код. Опять же, в данном случае разработчики языков не соприкасаются со своими пользователями. Они делают действительно хорошую работу решая немного неправильную задачу.
Активный профайлер может быть хорошей идеей -- всучить данные по быстродействию программисту вместо того, чтобы ждать пока он сам придёт и спросит. Например, редактор может подсвечивать бутылочные горлышки красным, когда программист редактирует исходный код. Другим подходом будет представление каким-нибудь образом того, что происходит в исполняющихся программах. Это будет действительно большой победой для серверных приложений, где есть множество проблем, за которыми тебе нужно следить. Активных профайлер мог бы графически показывать, что происходит в памяти в то время как программа исполняется, или даже издавать звуки для того, чтобы сообщить о том, что что-то произошло.
Звук может быть хорошим решением проблемы. В одном месте, где я работал, у нас была большая панель со цифирблатами, которые показывали, что происходило с нашими веб-серверами. Стрелки двигались маленькими сервомоторами, производящими лёгкий шум, когда они крутились. Я не мог видеть доску из-за своего стола, но я обнаружил, что я мог по звуку сразуже сказать, когда на сервере возникала проблема.
Создание профайлера, который будет автоматически определять неэффективные алгоритмы, может быть вполне возможным. Я не удивлюсь, что определённые шаблоны доступа к памяти окажутся признаком плохих алгоритмов. Если бы существовал маленький парень, бегающий внутри компьютера, исполняя наши программы, то его история была бы такой же длинной и жалобной, как и у служащего федерального правительства. У меня часто возникает ощущение, что я заставляю процессор бегать по кругу, но у меня не было хорошего способа посмотреть на то, что происходит.
Несколько лиспов сейчас компилируются в байт код, который затем исполняется интерпретатором. Это обычно делается для того, чтобы сделать упростить портирования реализации языка, но это может быть удобной особенностью языка. Сделать байт код официальной частью языка, и позволить программисту использовать inline байт код в бутылочных горлышках. Тогда такая оптимизация так же будет пригодной к портированию.
Природа скорости, как она воспринимается конечным пользователем, может меняться. С увеличением числа серверных приложений, может оказаться, что всё большее число программ являются зависимыми от ввода-вывода. Быстрый ввод-вывод может окупить себя. Язык может помочь простыми, прямыми мерами на подобии простых, быстрых, форматированных функций вывода, а так же глубокими структурными изменениями наподобие кэширования и постоянных (persistent) объектов.
Пользователи заинтересованы во времени отклика. Но другим тип эффективности становится всё более и более важным: количество пользователей на один процессор, которое вы можете одновременно поддерживать. Многие интересные приложения, которые будут написаны в ближайшем будущем, будут серверными, и количество пользователей на один сервер является критическим вопросом для каждого, кто размещает подобные приложения. In the capital cost of a business offering a server-based application, this is the divisor.
В течение лет, эффективность значила не много в большинстве приложений для конечного пользователя. Разработчики могли предположить, что на столах пользователей будет находиться процессор всё более возрастающей мощности. И, в соответствие с законом Паркинсона, ПО потребляло все имеющиеся ресурсы. Это изменится с приходом серверных приложений. В этом мире ПО и будет поставляться вместе с оборудованием. Для компаний, которые предлагают серверные приложения, будет очень важно то, сколько пользователей может обслужит один сервер.
В некоторых приложениях, процессор будет ограничивающим фактором, а скорость выполнения будет иметь наибольшее значение с точки зрения оптимизации. Но часто ограничением будет объём памяти: количество пользователей будет определяться количеством памяти, которое требуется для данных каждого пользователя. Язык может помочь и в этом случае. Хорошая поддержка потоков позволит пользователям разделять одну кучу. Большим подспорьем будут постоянные (persistent) объекты, а также поддержка "ленивой загрузки" на уровне языка.
9 Время
Последний ингредиент в котором нуждается популярный язык -- это время. Никто не захочет писать программы на языке, который может исчезнуть, как многие ЯП. Так что многие хакеры предпочтут подождать пару лет перед тем, как даже начинать думать о том, стоит ли его использовать.
Изобретатели удивительных новых вещей очень часто бывают удивлены, когда узнают об этом, но тебе требуется время для того, чтобы донести сообщение!! до людей. Один мой друг редко делает то, о чём его попросили в первый раз. Он знает, что люди иногда просят о вещах, которые им не нужны. Для того, чтобы исключить потерю его времени, он ждёт, чтобы его попросили сделать это в третий или четвёртый раз; к этому времени, те, кто просят, могут быть весьма раздражёнными, но, по крайней мере, они действительно хотят то, о чём они просят.
Большинство людей научились применять подобный фильтр по отношению к новшествам, о которых они слышали. Они даже не начинают уделять этому внимание до тех пор пока не услышат об этом в десятый раз. У них есть прекрасное оправдание: большинство горячего и нового чего-бы-то-ни-было оказывается простой потерей времени, и в конце концов пропадает. Отложив изучение VRML, я вообще избежал его изучения.
Так что, любой человек изобретающий что-то новое должен быть готов к тому, что ему придётся повторять своё сообщение в течение многих лет, до тех пор, пока люди не начнут воспринимать его. Мы написали то, что, насколько я знаю, оказалось первым веб-приложением и у нас ушли годы на то, что донести до людей то, что им не надо его загружать. Это не говорит о том, что они глупые. Они просто заставляли нас крутиться.
Хорошая новость заключается в том, что повторение решает эту проблему. Всё что вам нужно -- это продолжать повторять свою историю и, в конце концов, люди начнут слышать. Дело не в том, что люди замечают, что вы здесь и обращают на вас внимание, а в том, что они замечают то, что вы ещё здесь.
Правдой является и то, что много времени занимает набор критической массы. Большинство технологий эволюционируют в течение длительного времени, даже после того, как они были запущены -- ЯП в особенности. Ничего не может быть лучше для технологии, чем несколько лет использования только небольшим количеством early adopters. Early adopters являются изощрёнными и требовательными, и быстро выявляют оставшиеся недостатки в твоей технологии. Когда у тебя всего несколько пользователей, ты можешь быть в тесном контакте со всеми ними. И early adopters прощают тебя, когда ты улутшаешь твою систему, даже если это и вызывает некоторые сбои.
Существуют два способа представить новые технологии: метод органического роста, и метод большого взрыва. Примерами метода органического роста являются "выросшие из коротких штанишек" (seat-of-the-pants) недофинансированные гаражные стартапы. Пара парней, работающих в темноте, разрабатывает некую новую технологию. Они запускают её безо всякого маркетинга и, в начале, у них есть только несколько (фантастически преданных) пользователей. Они продолжают улучшать технологию, а в это время количество пользователей прирастает благодаря сплетням и слухам. И они уже большие ещё до того как они узнают об этом.
Примером другого подхода, метода большого взрыва, может служить поддерживаемые венчурным капиталом (VC), стартапы. Они бросаются разрабатывать продукт, запускают его с огромной рекламной кампанией, и сразуже (они надеются) заполучают большую пользовательскую базу.
В основном, гаражные ребята завидуют ребятам Большого Взрыва. Ребята Большого Взрыва гладкие, уверенные и VC уважает их. Они могут позволить всё самое лучшее, а ПР кампании, окружающие запуск, делают их знаменитостями, в качестве побочного эффекта. Ребята Органического роста, сидя в своих гаражах, чувствуют себя бедными и ни кем не любимыми. Но всё же, я думаю, что они часто ошибаются жалея себя. Кажется, что Органический Рост порождает лучшие технологии и более богатых основателей, чем метод Большого Взрыва. Если вы посмотрите на доминирующие сегодня технологии, то вы увидите, что большинство из них развивались органически.
Этот шаблон применим не только к компаниям. Ты также обнаружишь его и в спонсируемых исследованиях. Multics и Common Lisp были проектами Большого Взрыва, а Unix и MacLisp были проектами Органического Роста.
10 Перепланировка
"Лучший способ писать -- это переписывать", написал E. B. White. Каждый хороший писатель знает это, и это хорошо для ПО. Наиболее важная часть планирования -- это перепланировка. ЯП, в особенности, перепланируются не достаточно.
Для того, чтобы писать хорошее ПО, ты должен держать в голове две противоположные идеи. Тебе требуется наивная вера молодого хакера в твои способности, и в тоже время, скептицизм ветерана. Ты должен быть способен думать о том, насколько это может быть сложно (http://www.trevorblackwell.com/) одной частью твоего мозга, пока другая думает, что это никогда не заработает (http://www.pdos.lcs.mit.edu/~rtm/).
Хитрость заключается в том, чтобы осознать, что здесь нет никакого противоречия. Ты желаешь быть настроенным оптимистически и пессимистически по отношению к двум совершенно разным вещам. Ты должен быть оптимистом касательно возможности решения задачи, но скептиком касательно ценности какого бы то ни было решения, которое у тебя есть.
Люди делающие хорошую работу часто думают, что всё над чем они работают -- отстой. Другие видят, что то, что они делают полно изумительных вещей, но создатель полон беспокойства. Этот не совпадение: именно беспокойство делает работу стоящей.
Если ты сможешь сохранять равновесие между надеждой и беспокойством, то они будут тянуть твой проект вперёд, так же как две твои ноги заставляют велосипед двигаться вперёд. Во время первой фазы работы двух-фазового инновационного двигателя, ты неистово работаешь над некой проблемой, вдохновлённый твоей уверенностью в том, что ты сможешь разрешить её. Во время второй фазы, ты смотришь на то, что ты сделал под холодным утренним светом, и ясно видишь все недостатки. Но пока твой критический настрой не перевесит твою надежду, ты будешь способен смотреть на твою возможно незавершенную систему, и думать о том, насколько трудно будет одолеть остаток пути, тем самым продолжая цикл.
Сохранять эти две силы в равновесии может быть непростой задачей. В молодых хакерах оптимизм преобладает. Они делают нечто, что, по их мнению, -- супер, и никогда не улучшают этого. В старых хакерах скептицизм преобладает, и они даже не осмелятся взяться за амбициозные проекты.
Хорошо всё то, что помогает вам поддерживать цикл перепланировки. Можно снова и снова переписывать прозу, пока ты не будешь счастлив от того, что у тебя получилось. Но ПО, как правило, не перепланируется в достаточной степени. У прозы есть читатели, а у ПО -- *пользователи*. Если писатель перепишет очерк, то люди, читавшие его старую версию, вряд ли будут жаловаться на то, что ход их мыслей был нарушен вновь введёными несовместимостями.
Пользователи похожи на обоюдоострый клинок. Они могут помочь тебе улучшить твой язык, но они также могут удерживать тебя от его улучшения. Так что тщательно выбирай своих пользователей, и медленно наращивай их количество. Пользователи подобны оптимизации: промедление будет мудрым курсом. Как правило, внося изменения, ты можешь зайти дальше чем ты думаешь. Введение изменений подобно снятию повязки: боль превращается в память практически в тот же самый момент, когда ты её ощутил.
Всем известно, что разработка языка комитетом не является хорошей идеей. Комитеты порождают плохой дизайн. Но я думаю, что главная опасность исходящая от комитетов заключается в том, что они вмешиваются в перепланировку. Требуется так много работы для внесения изменений, что никто не хочет этим заниматься. Существует тенденция заключающаяся в том, что всё то, что порождается комитетом остаётся неизменным, даже если большинству членов это не нравится.
Это происходит даже в случае если комитет состоит из двух человек. Особенно часто это происходит в случае с интерфейсами между частями ПО, написанными двумя различными людьми. Для того, чтобы изменить интерфейс сразу оба должны согласиться изменить его. И поэтому интерфейсы обычно вообще не меняются, что является проблемой, так как интерфейсы -- это наиболее ad hoc части любой системы.
А смысл следующего параграфа я просто не понял:
One solution here might be to design systems so that interfaces are horizontal instead of vertical-- so that modules are always vertically stacked strata of abstraction. Then the interface will tend to be owned by one of them. The lower of two levels will either be a language in which the upper is written, in which case the lower level will own the interface, or it will be a slave, in which case the interface can be dictated by the upper level.
11 Lisp
Всё это ведёт к тому, что для нового Lisp'а надежда есть. Есть надежда для любого языка, который даёт хакерам то, что они хотят, включая Lisp. Я думаю, что мы сделали ошибку думая, что хакеры отвернулись от Lisp'а из-за его необычности. Эта успокаивающая иллюзия может не дать нам увидеть настоящую проблему с Lisp, или, по крайней мере, Common Lisp, заключающуюся в том, что его обламывает делать то, что хакеры хотят делать. Языку хакеров требуются мощные библиотеки и что-нибудь, что можно хакнуть. У КЛ нет ни того, ни другого. Язык хакеров краток и пригоден к хаку. А КЛ нет.
Хорошая новость заключается в том, что Lisp сам по себе не отстой, а КЛ -- отстой. Если мы сможем разработать новый Lisp, который будет настоящим хакерским языком, то, как мне кажется, хакеры будут его использовать. Они будут использовать любой язык, который делает своё дело. Всё что мы должны сделать -- это обеспечить Lisp делает какуюнибудь важную работу лучше чем другие языки.
История предлагает воодушевляющие примеры. С течением времени, успешные новые языки заимствуют всё больше и больше особенностей Lisp. Осталось не так много того, что вы можете скопировать, до того как язык который вы создали превратится в Lisp. Последний горячий язык, Питон, разбавил Lisp инфиксным синтаксисом и отсутствием макросов. Новый Lisp будет естественным шагом в этом направлении.
Иногда я думаю, что называть его улучшенной версией Питона будет хорошим маркетинговым трюком. Это звучит клёвее чем Lisp. Для многих людей, Lisp -- это медленный язык для ИИ с большим количеством скобок. Официальная биография Fritz Kunze старательно избегает употребления L-слова. Однако я считаю, что мы не должны бояться называть новый Lisp Lisp'ом. У многих из лучших хакеров всё ещё осталось скрытое уважение к Lisp -- например у тех, кто видит 6.001 и понимает. А они являются именно теми пользователями, которых тебе нужно завоевать.
В "Как стать хакером" Эрик Реймонд ("How to Become a Hacker," Eric Raymond) описывает Lisp как что-то подобное Латыни или Греческому -- язык, который тебе следует выучить в качестве упражнения для интеллекта, даже если ты не будешь его использовать:
Lisp стоит изучения ради того опыта глубокого просветления, который ты приобретёшь, когда выучишь его; этот опыт сделает тебя лучшим программистом до конца твоих дней, даже если ты не будешь использовать Lisp в больших количествах.
Если бы я не знал Lisp, чтение этого отрывка заставило бы меня задаться некоторыми вопросами. Язык, который сделает меня лучшим программистом, если это означает хоть что-то, то это означает, что этот язык должен лучше подходить для программирования. И это именно то, что говорит Эрик.
Я думаю, что пока эта идея крутится по близости, хакеры будут достаточно восприимчивы к новому Lisp'у, даже если он будет называться Lisp'ом. Но этот Lisp должен быть хакерским языком, как классические Lisp'ы 1970-ых. Он должен быть насыщенным, простым и пригодным к хаку. И он должен обладать мощными библиотеками позволяющими хакерам делать то, что они хотят делать.
Говоря о библиотеках, то, по моему мнению, нам есть где развернуться для того, чтобы побить Перл и Питон на их собственной территории. Многие из новых приложений которые должны быть написаны в ближайшие годы будут серверными приложениями. Нет причин по которым Lisp не должен обладать такими же хорошими библиотеками по обработке строк как Перл, и если этот новый Lisp будет обладать мощными библиотеками для серверных приложений, он сможет стать очень популярным. Хорошие хакеры не отворачивают носы от нового инструмента, который позволит им решать трудные проблемы несколькими вызовами библиотечных функций. Помни, хакеры ленивы.
Поддержка серверных приложений на уровне языка стала бы ещё большей победой. Например, явная поддержка многопользовательских программ, или обозначение принадлежности данных с помощью тегов.
Серверные приложения также дают ответ на вопрос о том, что именно будет хакаться с использованием этого нового Lisp'а. Не повредит сделать Lisp более подходящим в качестве языка скриптов для Unix. (Сложно будет сделать его ещё менее подходящим.) Но я думаю, что лучше всего будет следовать примеру Tcl, и поставлять этот Lisp вместе с готовой системой для поддержки серверных приложений. Lisp, из-за своей природы естественно подходит для серверных приложений. Lexical closures provide a way to get the effect of subroutines when the ui is just a series of web pages. S-выражения легко вписываются в html, а макросы хороши для его генерации. Есть потребность в лучших инструментах для написания серверных приложений, и есть потребность в новом Lisp'е, и они будут прекрасно работать сообща/вместе.
12 Язык-Мечта
Подводя итог, опишем язык мечты для хакеров. Язык-мечта прекрасен, чист и краток. Он обладает интерактивным интерфейсом, который быстро загружается. Ты можешь писать программы для решения обычных задач используя очень мало кода. Практически весь код, который ты пишешь, является специфическим для твоего приложения. Всё остальное должно быть уже сделано за тебя.
Синтаксис языка должен быть как можно более кратким. Тебе не должно требоваться печатать ненужный символ, или даже часто использовать клавишу Шифт.
Используя большие абстракции ты можешь написать первую версию программы очень быстро. Позже, когда тебе захочется оптимизировать, у тебя под рукой будет хороший профайлер, который укажет тебе на чём тебе нужно сфокусировать внимание. Ты можешь сделать внутренние циклы ослепительно быстрыми, используя inline байт код, если тебе это потребуется.
Имеется большое количество хороших примеров на которых можно учиться, и язык до такой степени интуитивно понятен, что ты можешь научиться использовать его за пару минут читая примеры. Тебе не потребуется часто заглядывать в руководство. Руководство тонкое и в нём мало предупреждений и оговорок.
Язык обладает маленьким ядром, и мощными, крайне ортодоксальными библиотеками, разработанные с такой же тщательностью, что и ядро языка. Все библиотеки хорошо работают вместе; всё в языке подходит как части в сложной фото-камере. Ничего не объявлено устаревшим или оставленно для совместимости. Исходный код всех библиотек доступен сразу. Легко общаться с ОС и приложениями написанными на других языках.
Язык состоит из нескольких слоёв. Высоко-уровневые абстракции прозрачно строятся из низко-уровневых абстракций, к которым ты можешь получить доступ, если захочешь.
От тебя ничто не спрятано из того, что не должно быть спрятанным. Язык предлагает абстракции только в качестве способа сэкономить твоё время, а не в качестве способа указывать тебе, что ты должен делать. Фактически, язык убеждает тебя стать равным участником в его разработке. Ты можешь менять всё в нём, включая даже синтаксис, и всё, что ты пишешь, насколько это возможно, имеет тот же статус, что и то, что было предопределено.
//**************************************
Примечания
[1] Макросы, очень похожие на современное представление о них, были предложены Тимоти Хартом (Timothy Hart) в 1964 году, через два года после того как Lisp 1.5 был выпущен. Изначально, недоставало способов избежать variable capture и multiple evaluation; Hart's examples are subject to both.
[2] В "When the Air Hits Your Brain", нейрохирург Франк Вертосик (Frank Vertosick) приводит разговор в котором его chief resident, Гари, говорит о различие между хирургами и терапевтами ("вшами"):
Гари и я заказали большую пиццу и нашли открытую кабинку. Главный зажёг сигарету. "Посмотри на этих проклятых вшей, тараторят о каких-то болезнях, которые они повстречают раз в жизни. Вот в чём проблема со вшами, им нравится исключительно странные вещи. Они ненавидят то, чем они зарабатывают себе на хлеб и масло. Вот в чём разница между нами и трахаными вшами. Видишь, мы любим большие сочные lumbar disc herniations, а они ненавидят гипертонию..."
Мне Трудно думать об lumbar disc herniations как о чём-то сочном (кроме как буквально). Но всё же, я думаю, что знаю, что они имеют в виду. Мне часто приходилось ловить больших сочных жуков(bug -- жук). Непрограммисту может быть трудно представить, что можно получать удовольствие от работы с жуками. Конечно, было бы лучше, если всё просто работало. И это так, с одной стороны. И всё же, в выслеживании определённых типов жуков присутствует мрачное удовлетворение.
Май 2001
(Эта статья была написана в качестве некоего бизнес-плана для нового языка. )
Один мой друг однажды сказал одному выдающемуся эксперту по операционным системам, что он хочет разработать действительно хороший язык программирования. Эксперт сказал, что это будет пустой тратой времени, так как языки программирования не становятся популярными или непопулярными из-за своих достоинств, и поэтому не важно насколько хорош будет язык -- никто не будет его использовать. По крайней мере, именно это произошло с языками программирования, которые *он* разработал.
Что делает язык популярным? Заслуживают ли популярные языки свою популярность? Стоит ли пытаться определить хороший язык программирования? Как бы ты это сделал?
Я думаю, что ответы на эти вопросы можно найти, глядя на хакеров, и узнавая, чего они хотят. Языки программирования существуют *для* хакеров, и язык программирования хорош как язык программирования (а не, скажем, упражнение по денотационной семантике или разработке компиляторов) если, и только если, хакеры любят его.
1. Механика Популярности
Несомненно, большинство людей не выбирают язык программирования просто основываясь на его достоинствах. Большинству программистов кто-то говорит какой язык программирования использовать. Но я всё-же считаю, что воздействие таких внешних факторов на популярность языка программирования не так велико, как это инога считается. Я считаю, что главная трудность заключается в том, что представление хакеров о хорошем языке программирования отличается от представления разработчиков языков.
Из этих двух, мнение хакеров единственное, которое имеет значение. Языки программирования не теоремы. Они инструменты, разработанные для людей, и они должны быть разработаны так, чтобы соответствовать сильным и слабым сторонам человека, также как обувь должна подходить ноге. Если обувь жмёт, когда вы надеваете её, то это плохая обувь, независимо от того, насколько она изящна как скульптура.
Возможно, что большинство программистов не способны отличить хороший язык программирования от плохого. Но с другими инструментами тоже самое. Это не значит, что попытка разработать хороший язык программирования является пустой тратой времени. Хакеры-эксперты могут узнать хороший язык программирования, посмотрев на него, они будут использовать его. Хакеры-эксперты -- это, по общему признанию, крошечное меньшинство, но это крошечное меньшинство пишет всё хорошее ПО, и их влияние настолько велико, что остальные программисты будут стремиться использовать тот язык программирования, который будет использоваться этими хакерами. Часто, indeed, это не просто влияние, но команда: часто хакеры-эксперты являются именно теми людьми (начальники или faculty advisors), которые говорят другим программистам какой язык программирования использовать.
Мнения хакеров-экспертов не единственная сила, которая определяет относительную популярность языка программирования -- унаследованное ПО (Cobol) и шумиха (Ada, Java) также играют определённую роль -- но, по моему мнению, это самая влиятельная сила. Имея первоначальную критическую массу и достаточно времени, язык программирования вероятно сможет стать настолько популярным, насколько он этого заслуживает. И популярность будет отделять плохие языки от хороших, потому что обратная связь с настоящими живыми пользователями всегда ведёт к улучшениям. Посмотрите насколько сильно меняются все популярные языки в течении их жизни. Perl и Fortran -- крайние случаи, но даже Lisp изменился более чем сильно. Например, в Lisp 1.5 не было макросов; они появились намного позже, после того как хакеры из MIT потратили пару лет на использование Lisp для написания настоящих программ. [1]
Должен ли язык быть хорошим для того чтобы быть популярным или нет, я думаю, что язык должен быть популярным для того, чтобы быть хорошим. И он должен оставаться популярным для того, чтобы оставаться хорошим. Уровень искусства разработки языков программирования не стоит на месте. И Lisp сегодняшнего дня до сих пор очень похож на Lisp из MIT, каким он был в середине 80, из-за того, что именно тогда у него была достаточно большая пользовательская база.
Конечно, хакеры должны знать о языке до того, как они смогут им воспользоваться. Как они могут узнать о нём? От других хакеров. Однако, должна существовать определённая группа хакеров использующая этот язык до того, как другие узнают о нём. Меня интересует насколько большой должна быть эта группа; какое количество пользователей составляют критическую массу? Из головы, я могу сказать, что двадцать. Если у языка есть двадцать отдельных пользователей, то есть таких пользователей, которые по своей воле решили использовать этот язык, то этого может быть достаточно.
Достижение этого уровня не может быть простым. Я не удивлюсь, если окажется, что труднее подняться от нуля до двадцати пользователей, чем от двадцати до тысячи. Использование троянского коня может быть лучшим способом заполучить первые двадцать пользователей: дать людям приложение, которое они хотят, которое будет написано на новом языке.
2 Внешние Факторы
Давайте начнём с того, что признаем тот факт, что один внешний фактор влияет на популярность языка программирования. Чтобы стать популярным, ЯП должен быть скриптовым языком популярной системы. Fortran и Cobol были языками скриптов на ранних мэйнфреймах от IBM. C был языком скриптов в Unix, и так далее. Tcl был языком скриптов в Tk. Предназначение Java и Javascript быть языком скриптов в веб браузерах.
Lisp не является массово популярным языком по причине того, что он не является языком скриптов массово популярной системы. Остаточная полярностья Lisp относится к 60-70 годам двадцатого века, когда он был языком скриптов в MIT. Множество великих программистов того времени были так или иначе связаны с MIT. И в ранних 70-ых, до C, диалект Lisp из MIT, называемый MacLisp, был одним из тех языков программирования, который стали бы использовать серьёзные хакеры.
Сегодня Lisp является языком скриптов двух умеренно популярных систем -- Emacs и Autocad, и именно поэтому я считаю, что большая часть программирования на Lisp имеет место в Emacs Lisp или AutoLisp.
ЯП не существуют в полной изоляции. Хакать -- это переходный глагол -- хакеры обычно хакают что-либо, и на практике языки оцениваются по тому, насколько они приспособлены для хака. Так что, если вы хотите разработать популярный язык, вам нужно, или предложить больше чем язык, или же, вы должны так спроектировать язык, что он заменил бы язык скриптов какой-либо существующей системы.
Common Lisp непопулярен частично из-за того, что он сирота. В самом начале он поставлялся вместе с компьютером, который можно было хакнуть: Lisp Machine. Но Lisp Machine (вместе с параллельными компьютерами) были раздавлены возрастающей мощью процессоров общего назначения в 1980-ых. Common Lisp мог бы остаться популярным, если бы он был хорошим скриптовым языком для Unix. Но, увы, он ужасно плох.
Можно сказать, что языки оцениваются не с точки зрения своих достоинств. А можно сказать, что ЯП не является языком программирования если он не является скриптовым языком для чего-либо. Это только с первого взгляда кажется нечестным. Я считаю, что это не более нечестно, чем ожидать от языка того, что у него будет, скажем, реализация. Это только часть того, чем является ЯП.
ЯП нуждается в реализации, конечно же, и она должна быть свободной. Компании заплатят за ПО, но хакеры нет, а вам нужно привлечь именно хакеров.
Также языку требуется книга об этом языке. Книга должна быть толстой, хорошо написанной, и полной отличных примеров. K&R является идеалом. На данный момент, я почти готов сказать, что книга должна быть опубликована O'Reilly. Это становится определённым тестом для хакеров.
Также требуется online-документация. На самом деле, книга может начаться как online-документация. Но я не думаю, что материальные книги уже вышли из моды. Их формат удобен, и цензура, фактически навязываемая издателями, является полезным, хотя и несовершенным фильтром. Книжные магазины являются самым важным местом где можно узнать о новых языках.
3 Краткость
Если ты можешь обеспечить три вещи, в которых нуждается любой язык -- свободную реализацию, книгу, и что-нибудь хакнуть -- как ты сделаешь так, чтобы язык понравился хакерам?
Хакеры любят краткость. Хакеры ленивы, так же как ленивы математики и архитекторы-модернисты: они ненавидят всё лишнее. Я не отойду далеко от истины, сказав, что хакер, собирающийся написать программу, решая какой язык выбрать, по крайней мере подсознательно, основывается на количестве символов, которые ему придётся напечатать. Даже если хакеры не думают именно таким образом, то создатель языка должен действовать так, как будто это было так.
Будет ошибкой сюсюкать с пользователем, заставляя его печатать многословные выражения, напоминающие английский. Cobol был печально известен этим недостатком. Если вы попросите хакера напечатать
add x to y giving z
вместо
z = x+y
, то хакер воспримет это как нечто среднее между оскорблением его ума и грехом против Бога.
Иногда говорят, что в Lisp стоило использовать first и rest вместо car и cdr, поскольку это сделало бы программы более простыми для чтения. Может быть в течение первой пары часов. Но хакеры могут выучить достаточно быстро, что car указывает на первый элемент списка, а cdr -- на остальное. Использование first и rest обозначало бы, что пришлось бы печатать на 50% больше символов. И у них разные длины, что означает, что аргументы не будут выравнены, так как car и cdr очень часто встречаются в последовательных строках текста. Я обнаружил, что то как строки выравнены на на странице, имеет определённое значение. Я с трудом могу читать Lisp-код, когда он набран шрифтом с переменной шириной символов, и друзья говорят, что это правдиво и для других языков.
Краткость это, то в чём языки с strong типизацией проигрывают. Если все прочие условия равны, никто не захочет начинать программу с кучи объявлений. Всё что может быть сделано неявно, именно так и должно делаться.
Каждый отдельный символ должен быть коротким. Perl и Common Lisp занимают противоположные позиции по этому вопросу. Код Perl может быть настолько плотным, что его можно перепутать со шифром, тогда как имена встроенных в Common Lisp операторов до смешного длинны. Создатели Common Lisp, видимо, полагали, что у пользователей будет текстовый редактор, который будет набирать эти имена для них. Но затраты на длинные имена заключается не только в затратах на то, чтобы их напечатать, но и в затратах на их чтение, и в затратах на место, которое они занимают на вашем экране.
4 Hackability
Одна вещь для хакеров важней даже краткости: возможность делать то, что ты хочешь. Поразительное количество усилий было приложено в течении истории языков программирования для того, чтобы не дать программистам делать то, что считается неправильным. Это опасно самонадеянное намеренье. Как разработчик языка программирования может знать, что потребуется программисту? Я считаю, что разработчикам языка стоит полагать, что целевой пользователь будет гением, которому придётся делать вещи, которые они не могли предугадать, а не ламер, которого нужно защищать от самого себя. Ламер, так или иначе, но прострелит себе ногу. Ты можешь спасти его от обращения к переменной в другом пакете, но ты не сможешь спасти его от написания плохо продуманной программы, решающей неправильную задачу, и требующей вечности на реализацию.
Хорошему программисту иногда хочется делать опасные и невкусные вещи. Под невкусными я понимаю вещи, которые заходят за семантические фасады, которые язык пытается представить: например, попытки прямого доступа к внутренним представлениям неких высоко-уровневых абстракций. Хакеры любят хакать, а хаканье означает залезание внутрь вещей и использование их для неочевидных целей.
Далай возможным использование для неочевидных целей. Когда ты создаёшь некий инструмент, люди используют не предусмотренными тобой способами, и это особенно верно в случае с высоко articulated инструментами как язык программирования. Многие хакеры захотят изогнуть твою семантическую модель так, как ты не мог даже представить. Я говорю, позволь им; предоставляй программистам доступ к как можно большему количеству внутренних вещей, пока ты можешь делать это не подвергая опасности такие подсистемы времени исполнения как сборщик мусора.
В Common Lisp мне часто хотелось пройтись по всем полям структуры -- для того, чтобы вычистит ссылки на удалённый объект, например, или найти не инициированное поле. Я знаю, что под поверхностью структуры это просто векторы. Но, несмотря на это, я не могу написать общую функцию, которой я бы мог скормить любую структуру. Я могу получить доступ к полям только по имени, потому что это именно то для чего структуры и предназначены.
Хакеру может захотеться изменить задуманную модель раз или два в большой программе. Но возможность сделать это меняет многое. И это может быть больше чем просто вопросом решения задачи. Здесь также присутствует и некоторое удовольствие. Хакеры разделяют тайное удовольствие хирургов от копания во внутренностях, тайное удовольствие тинейджеров от выдавливания прыщей. [2] Для мальчиков, по крайней мере, некоторые виды ужасного увлекательны. Журнал Maxim публикует ежегодный том фотографий, содержащий смесь pin-up и жутких пришествий. Они знают свою аудиторию.
Исторически, Lisp давал хакерам отличную возможность делать вещи так, как им того хотелось. Полит корректность Common Lisp -- это ошибочный путь развития. Ранние Lisp'ы давали тебе возможность прикасаться ко всему. Большая часть этого духа, к счастью, сохранилась в макросах. Какая восхитительная возможность произвольно изменять исходный код.
Классические макросы являются настоящими инструментами для хакера -- простые, мощные и опасные. Так просто понять, что они делают: ты вызываешь функцию !!с аргументами макроса, и чтобы это не возвращало, это вставляется на место вызова макроса!!(что-то я не понял этот пассаж -- you call a function on the macro's arguments, and whatever it returns gets inserted in place of the macro call ). !!Гигиенические!! (вот опять -- Hygienic) макросы воплощают противоположный подход. Они пытаются защитить тебя от понимания того, что они делают. Я никогда не слышал, чтобы гигиенические макросы объяснялись одним предложением. И они являются классическим примером попыток определения того, что программистам позволено хотеть. Гигиенические макросы предназначены для того, чтобы, помимо других вещей, уберечь меня от !!захвата переменных!! (variable capture), но захват переменных -- это именно то, что мне нужно в некоторых макросах.
Действительно хороший язык должен быть как чистым, так и грязным: чисто спроектированным, с маленьким ядром легко-понятных и крайне ортодоксальных операторов, но грязным в том смысле, что он позволяет хакерам делать вещи тем способом, который им нравится. C именно такой язык. Именно такими были ранние Lisp. У языка для настоящих хакеров всегда будет слегка разгульный характер.
Хороший яп должен обладать чертами, которые заставят людей, использующих фразы типа "программная инженерия" (software engineering), не одобряюще качать головами. На другом конце континиума находятся языки, наподобие Ada или Pascal, примеры пристойности, пригодной для обучения, но ни для ничего больше.
5 Одноразовые Программы
Для того, чтобы быть привлекательным для хакеров, язык должен хорошо подходить для написания программ, которые они хотят писать. И это означает, может быть это покажется удивительным, что он должен хорошо подходить для написания одноразовых программ.
Одноразовая программа -- это программа, которую ты быстро пишешь для некоторых ограниченных задач: программа для автоматизации задач по системному администрированию, или генерации тестовых данных для симуляции, или конвертирования данных из одного формата в другой. Удивляет в одноразовых программах то, что как же как и так многие "временные" здания построенные во многих американских университетах во время второй мировой войны, их не выбрасывают. Многие эволюционировали в настоящие программы, с настоящими возможностями и настоящими пользователями.
Мне кажется, что лучшие из больших программ начали свою жизнь именно так, а не проектировались с самого начала, как Hoover Dam. Страшно строить что-то большое с нуля. Когда люди берутся за проект, который слишком велик, они не могут справится. Проект либо захлёбывается, либо результат получается стерильным и деревянным: торговая улица, а не настоящий деловой центр, Бразилия, а не Рим, Ada, а не C.
Другим способом получить большую программу -- это начать с одноразовой программы и улучшать её. Этот подход менее пугающий, и дизайн программы выигрывает от эволюции. Я думаю, что если кто-нибудь посмотрит, то выяснится, что это именно тот способ, каким большинство больших программ были разработаны. И программы, развивавшиеся таким образом, вероятно, до сих пор написаны на том языке, на котором они были первоначально написаны, так как портирование программ -- редкий случай, за исключением тех случаев, когда это делается по политическим причинам. Пародоксально, но факт, если вы хотите создать язык, который будет использоваться для больших систем, тебе следует создавать язык для написания одноразовых программ, потому что именно из таких программ большие системы берут своё начало.
Перл является поразительным примером такого развития событий. Он не только был разработан для написания одноразовых программ, но и сам, в значительной степени, был одноразовой программой. Перл начал свою жизнь как коллекция утилит для генерации отчётов, и эволюционировал в язык программирования только тогда, когда одноразовые программы, которые люди писали на нём, стали больше. Только после Перл 5 (если не позже) язык стал пригодным для написания серьёзных программ, но уже тогда он был популярен в массах.
Что делает язык подходящим для написания одноразовых программ? Для начала он должен быть уже доступным. Одноразовые программы это что-то, что по вашему мнению, вы напишите за час. Так что, язык уже должен быть установлен на вашем компьютере. Это не должно быть что-то, что нужно устанавливать перед использованием. Оно уже должно быть здесь. C поставлялся вместе с операционной системой. Перл первоначально являлся инструментом для системного администрирования, и вы уже установили его.
Быть доступным означает большее чем просто быть установленным. Интерактивный язык, с интерфейсом командной строки, более доступен чем, тот язык, с которым приходится компилировать и запускать программы раздельно. Популярный язык программирования должен быть интерактивным и быстро запускаться.
Другой вещью, которую вам хочется иметь в одноразовых программах -- это краткость. Краткость всегда привлекательна для хакеров, и в наибольшей степени в программах, которые они собираются написать за час.
//************************************** *******
Примечания
[1] Макросы, очень похожие на современное представление о них, были предложены Тимоти Хартом (Timothy Hart) в 1964 году, через два года после того как Lisp 1.5 был выпущен. Изначально, недоставало способов избежать variable capture и multiple evaluation; Hart's examples are subject to both.
[2] В "When the Air Hits Your Brain", нейрохирург Франк Вертосик (Frank Vertosick) приводит разговор в котором его chief resident, Гари, говорит о различие между хирургами и терапевтами ("вшами"):
Гари и я заказали большую пиццу и нашли открытую кабинку. Главный зажёг сигарету. "Посмотри на этих проклятых вшей, тараторят о каких-то болезнях, которые они повстречают раз в жизни. Вот в чём проблема со вшами, им нравится исключительно странные вещи. Они ненавидят то, чем они зарабатывают себе на хлеб и масло. Вот в чём разница между нами и трахаными вшами. Видишь, мы любим большие сочные грыжы межпозвонкового диска, а они ненавидят гипертонию..."
Мне Трудно думать о грыжах межпозвонкового диска как о чём-то сочном (кроме как буквально). Но всё же, я думаю, что знаю, что они имеют в виду. Мне часто приходилось ловить больших сочных жуков(bug -- жук). Непрограммисту может быть трудно представить, что можно получать удовольствие от работы с жуками. Конечно, было бы лучше, если всё просто работало. И это так, с одной стороны. И всё же, в выслеживании определённых типов жуков присутствует мрачное удовлетворение.
(Эта статья была написана в качестве некоего бизнес-плана для нового языка. )
Один мой друг однажды сказал одному выдающемуся эксперту по операционным системам, что он хочет разработать действительно хороший язык программирования. Эксперт сказал, что это будет пустой тратой времени, так как языки программирования не становятся популярными или непопулярными из-за своих достоинств, и поэтому не важно насколько хорош будет язык -- никто не будет его использовать. По крайней мере, именно это произошло с языками программирования, которые *он* разработал.
Что делает язык популярным? Заслуживают ли популярные языки свою популярность? Стоит ли пытаться определить хороший язык программирования? Как бы ты это сделал?
Я думаю, что ответы на эти вопросы можно найти, глядя на хакеров, и узнавая, чего они хотят. Языки программирования существуют *для* хакеров, и язык программирования хорош как язык программирования (а не, скажем, упражнение по денотационной семантике или разработке компиляторов) если, и только если, хакеры любят его.
1. Механика Популярности
Несомненно, большинство людей не выбирают язык программирования просто основываясь на его достоинствах. Большинству программистов кто-то говорит какой язык программирования использовать. Но я всё-же считаю, что воздействие таких внешних факторов на популярность языка программирования не так велико, как это инога считается. Я считаю, что главная трудность заключается в том, что представление хакеров о хорошем языке программирования отличается от представления разработчиков языков.
Из этих двух, мнение хакеров единственное, которое имеет значение. Языки программирования не теоремы. Они инструменты, разработанные для людей, и они должны быть разработаны так, чтобы соответствовать сильным и слабым сторонам человека, также как обувь должна подходить ноге. Если обувь жмёт, когда вы надеваете её, то это плохая обувь, независимо от того, насколько она изящна как скульптура.
Возможно, что большинство программистов не способны отличить хороший язык программирования от плохого. Но с другими инструментами тоже самое. Это не значит, что попытка разработать хороший язык программирования является пустой тратой времени. Хакеры-эксперты могут узнать хороший язык программирования, посмотрев на него, они будут использовать его. Хакеры-эксперты -- это, по общему признанию, крошечное меньшинство, но это крошечное меньшинство пишет всё хорошее ПО, и их влияние настолько велико, что остальные программисты будут стремиться использовать тот язык программирования, который будет использоваться этими хакерами. Часто, indeed, это не просто влияние, но команда: часто хакеры-эксперты являются именно теми людьми (начальники или faculty advisors), которые говорят другим программистам какой язык программирования использовать.
Мнения хакеров-экспертов не единственная сила, которая определяет относительную популярность языка программирования -- унаследованное ПО (Cobol) и шумиха (Ada, Java) также играют определённую роль -- но, по моему мнению, это самая влиятельная сила. Имея первоначальную критическую массу и достаточно времени, язык программирования вероятно сможет стать настолько популярным, насколько он этого заслуживает. И популярность будет отделять плохие языки от хороших, потому что обратная связь с настоящими живыми пользователями всегда ведёт к улучшениям. Посмотрите насколько сильно меняются все популярные языки в течении их жизни. Perl и Fortran -- крайние случаи, но даже Lisp изменился более чем сильно. Например, в Lisp 1.5 не было макросов; они появились намного позже, после того как хакеры из MIT потратили пару лет на использование Lisp для написания настоящих программ. [1]
Должен ли язык быть хорошим для того чтобы быть популярным или нет, я думаю, что язык должен быть популярным для того, чтобы быть хорошим. И он должен оставаться популярным для того, чтобы оставаться хорошим. Уровень искусства разработки языков программирования не стоит на месте. И Lisp сегодняшнего дня до сих пор очень похож на Lisp из MIT, каким он был в середине 80, из-за того, что именно тогда у него была достаточно большая пользовательская база.
Конечно, хакеры должны знать о языке до того, как они смогут им воспользоваться. Как они могут узнать о нём? От других хакеров. Однако, должна существовать определённая группа хакеров использующая этот язык до того, как другие узнают о нём. Меня интересует насколько большой должна быть эта группа; какое количество пользователей составляют критическую массу? Из головы, я могу сказать, что двадцать. Если у языка есть двадцать отдельных пользователей, то есть таких пользователей, которые по своей воле решили использовать этот язык, то этого может быть достаточно.
Достижение этого уровня не может быть простым. Я не удивлюсь, если окажется, что труднее подняться от нуля до двадцати пользователей, чем от двадцати до тысячи. Использование троянского коня может быть лучшим способом заполучить первые двадцать пользователей: дать людям приложение, которое они хотят, которое будет написано на новом языке.
2 Внешние Факторы
Давайте начнём с того, что признаем тот факт, что один внешний фактор влияет на популярность языка программирования. Чтобы стать популярным, ЯП должен быть скриптовым языком популярной системы. Fortran и Cobol были языками скриптов на ранних мэйнфреймах от IBM. C был языком скриптов в Unix, и так далее. Tcl был языком скриптов в Tk. Предназначение Java и Javascript быть языком скриптов в веб браузерах.
Lisp не является массово популярным языком по причине того, что он не является языком скриптов массово популярной системы. Остаточная полярностья Lisp относится к 60-70 годам двадцатого века, когда он был языком скриптов в MIT. Множество великих программистов того времени были так или иначе связаны с MIT. И в ранних 70-ых, до C, диалект Lisp из MIT, называемый MacLisp, был одним из тех языков программирования, который стали бы использовать серьёзные хакеры.
Сегодня Lisp является языком скриптов двух умеренно популярных систем -- Emacs и Autocad, и именно поэтому я считаю, что большая часть программирования на Lisp имеет место в Emacs Lisp или AutoLisp.
ЯП не существуют в полной изоляции. Хакать -- это переходный глагол -- хакеры обычно хакают что-либо, и на практике языки оцениваются по тому, насколько они приспособлены для хака. Так что, если вы хотите разработать популярный язык, вам нужно, или предложить больше чем язык, или же, вы должны так спроектировать язык, что он заменил бы язык скриптов какой-либо существующей системы.
Common Lisp непопулярен частично из-за того, что он сирота. В самом начале он поставлялся вместе с компьютером, который можно было хакнуть: Lisp Machine. Но Lisp Machine (вместе с параллельными компьютерами) были раздавлены возрастающей мощью процессоров общего назначения в 1980-ых. Common Lisp мог бы остаться популярным, если бы он был хорошим скриптовым языком для Unix. Но, увы, он ужасно плох.
Можно сказать, что языки оцениваются не с точки зрения своих достоинств. А можно сказать, что ЯП не является языком программирования если он не является скриптовым языком для чего-либо. Это только с первого взгляда кажется нечестным. Я считаю, что это не более нечестно, чем ожидать от языка того, что у него будет, скажем, реализация. Это только часть того, чем является ЯП.
ЯП нуждается в реализации, конечно же, и она должна быть свободной. Компании заплатят за ПО, но хакеры нет, а вам нужно привлечь именно хакеров.
Также языку требуется книга об этом языке. Книга должна быть толстой, хорошо написанной, и полной отличных примеров. K&R является идеалом. На данный момент, я почти готов сказать, что книга должна быть опубликована O'Reilly. Это становится определённым тестом для хакеров.
Также требуется online-документация. На самом деле, книга может начаться как online-документация. Но я не думаю, что материальные книги уже вышли из моды. Их формат удобен, и цензура, фактически навязываемая издателями, является полезным, хотя и несовершенным фильтром. Книжные магазины являются самым важным местом где можно узнать о новых языках.
3 Краткость
Если ты можешь обеспечить три вещи, в которых нуждается любой язык -- свободную реализацию, книгу, и что-нибудь хакнуть -- как ты сделаешь так, чтобы язык понравился хакерам?
Хакеры любят краткость. Хакеры ленивы, так же как ленивы математики и архитекторы-модернисты: они ненавидят всё лишнее. Я не отойду далеко от истины, сказав, что хакер, собирающийся написать программу, решая какой язык выбрать, по крайней мере подсознательно, основывается на количестве символов, которые ему придётся напечатать. Даже если хакеры не думают именно таким образом, то создатель языка должен действовать так, как будто это было так.
Будет ошибкой сюсюкать с пользователем, заставляя его печатать многословные выражения, напоминающие английский. Cobol был печально известен этим недостатком. Если вы попросите хакера напечатать
add x to y giving z
вместо
z = x+y
, то хакер воспримет это как нечто среднее между оскорблением его ума и грехом против Бога.
Иногда говорят, что в Lisp стоило использовать first и rest вместо car и cdr, поскольку это сделало бы программы более простыми для чтения. Может быть в течение первой пары часов. Но хакеры могут выучить достаточно быстро, что car указывает на первый элемент списка, а cdr -- на остальное. Использование first и rest обозначало бы, что пришлось бы печатать на 50% больше символов. И у них разные длины, что означает, что аргументы не будут выравнены, так как car и cdr очень часто встречаются в последовательных строках текста. Я обнаружил, что то как строки выравнены на на странице, имеет определённое значение. Я с трудом могу читать Lisp-код, когда он набран шрифтом с переменной шириной символов, и друзья говорят, что это правдиво и для других языков.
Краткость это, то в чём языки с strong типизацией проигрывают. Если все прочие условия равны, никто не захочет начинать программу с кучи объявлений. Всё что может быть сделано неявно, именно так и должно делаться.
Каждый отдельный символ должен быть коротким. Perl и Common Lisp занимают противоположные позиции по этому вопросу. Код Perl может быть настолько плотным, что его можно перепутать со шифром, тогда как имена встроенных в Common Lisp операторов до смешного длинны. Создатели Common Lisp, видимо, полагали, что у пользователей будет текстовый редактор, который будет набирать эти имена для них. Но затраты на длинные имена заключается не только в затратах на то, чтобы их напечатать, но и в затратах на их чтение, и в затратах на место, которое они занимают на вашем экране.
4 Hackability
Одна вещь для хакеров важней даже краткости: возможность делать то, что ты хочешь. Поразительное количество усилий было приложено в течении истории языков программирования для того, чтобы не дать программистам делать то, что считается неправильным. Это опасно самонадеянное намеренье. Как разработчик языка программирования может знать, что потребуется программисту? Я считаю, что разработчикам языка стоит полагать, что целевой пользователь будет гением, которому придётся делать вещи, которые они не могли предугадать, а не ламер, которого нужно защищать от самого себя. Ламер, так или иначе, но прострелит себе ногу. Ты можешь спасти его от обращения к переменной в другом пакете, но ты не сможешь спасти его от написания плохо продуманной программы, решающей неправильную задачу, и требующей вечности на реализацию.
Хорошему программисту иногда хочется делать опасные и невкусные вещи. Под невкусными я понимаю вещи, которые заходят за семантические фасады, которые язык пытается представить: например, попытки прямого доступа к внутренним представлениям неких высоко-уровневых абстракций. Хакеры любят хакать, а хаканье означает залезание внутрь вещей и использование их для неочевидных целей.
Далай возможным использование для неочевидных целей. Когда ты создаёшь некий инструмент, люди используют не предусмотренными тобой способами, и это особенно верно в случае с высоко articulated инструментами как язык программирования. Многие хакеры захотят изогнуть твою семантическую модель так, как ты не мог даже представить. Я говорю, позволь им; предоставляй программистам доступ к как можно большему количеству внутренних вещей, пока ты можешь делать это не подвергая опасности такие подсистемы времени исполнения как сборщик мусора.
В Common Lisp мне часто хотелось пройтись по всем полям структуры -- для того, чтобы вычистит ссылки на удалённый объект, например, или найти не инициированное поле. Я знаю, что под поверхностью структуры это просто векторы. Но, несмотря на это, я не могу написать общую функцию, которой я бы мог скормить любую структуру. Я могу получить доступ к полям только по имени, потому что это именно то для чего структуры и предназначены.
Хакеру может захотеться изменить задуманную модель раз или два в большой программе. Но возможность сделать это меняет многое. И это может быть больше чем просто вопросом решения задачи. Здесь также присутствует и некоторое удовольствие. Хакеры разделяют тайное удовольствие хирургов от копания во внутренностях, тайное удовольствие тинейджеров от выдавливания прыщей. [2] Для мальчиков, по крайней мере, некоторые виды ужасного увлекательны. Журнал Maxim публикует ежегодный том фотографий, содержащий смесь pin-up и жутких пришествий. Они знают свою аудиторию.
Исторически, Lisp давал хакерам отличную возможность делать вещи так, как им того хотелось. Полит корректность Common Lisp -- это ошибочный путь развития. Ранние Lisp'ы давали тебе возможность прикасаться ко всему. Большая часть этого духа, к счастью, сохранилась в макросах. Какая восхитительная возможность произвольно изменять исходный код.
Классические макросы являются настоящими инструментами для хакера -- простые, мощные и опасные. Так просто понять, что они делают: ты вызываешь функцию !!с аргументами макроса, и чтобы это не возвращало, это вставляется на место вызова макроса!!(что-то я не понял этот пассаж -- you call a function on the macro's arguments, and whatever it returns gets inserted in place of the macro call ). !!Гигиенические!! (вот опять -- Hygienic) макросы воплощают противоположный подход. Они пытаются защитить тебя от понимания того, что они делают. Я никогда не слышал, чтобы гигиенические макросы объяснялись одним предложением. И они являются классическим примером попыток определения того, что программистам позволено хотеть. Гигиенические макросы предназначены для того, чтобы, помимо других вещей, уберечь меня от !!захвата переменных!! (variable capture), но захват переменных -- это именно то, что мне нужно в некоторых макросах.
Действительно хороший язык должен быть как чистым, так и грязным: чисто спроектированным, с маленьким ядром легко-понятных и крайне ортодоксальных операторов, но грязным в том смысле, что он позволяет хакерам делать вещи тем способом, который им нравится. C именно такой язык. Именно такими были ранние Lisp. У языка для настоящих хакеров всегда будет слегка разгульный характер.
Хороший яп должен обладать чертами, которые заставят людей, использующих фразы типа "программная инженерия" (software engineering), не одобряюще качать головами. На другом конце континиума находятся языки, наподобие Ada или Pascal, примеры пристойности, пригодной для обучения, но ни для ничего больше.
5 Одноразовые Программы
Для того, чтобы быть привлекательным для хакеров, язык должен хорошо подходить для написания программ, которые они хотят писать. И это означает, может быть это покажется удивительным, что он должен хорошо подходить для написания одноразовых программ.
Одноразовая программа -- это программа, которую ты быстро пишешь для некоторых ограниченных задач: программа для автоматизации задач по системному администрированию, или генерации тестовых данных для симуляции, или конвертирования данных из одного формата в другой. Удивляет в одноразовых программах то, что как же как и так многие "временные" здания построенные во многих американских университетах во время второй мировой войны, их не выбрасывают. Многие эволюционировали в настоящие программы, с настоящими возможностями и настоящими пользователями.
Мне кажется, что лучшие из больших программ начали свою жизнь именно так, а не проектировались с самого начала, как Hoover Dam. Страшно строить что-то большое с нуля. Когда люди берутся за проект, который слишком велик, они не могут справится. Проект либо захлёбывается, либо результат получается стерильным и деревянным: торговая улица, а не настоящий деловой центр, Бразилия, а не Рим, Ada, а не C.
Другим способом получить большую программу -- это начать с одноразовой программы и улучшать её. Этот подход менее пугающий, и дизайн программы выигрывает от эволюции. Я думаю, что если кто-нибудь посмотрит, то выяснится, что это именно тот способ, каким большинство больших программ были разработаны. И программы, развивавшиеся таким образом, вероятно, до сих пор написаны на том языке, на котором они были первоначально написаны, так как портирование программ -- редкий случай, за исключением тех случаев, когда это делается по политическим причинам. Пародоксально, но факт, если вы хотите создать язык, который будет использоваться для больших систем, тебе следует создавать язык для написания одноразовых программ, потому что именно из таких программ большие системы берут своё начало.
Перл является поразительным примером такого развития событий. Он не только был разработан для написания одноразовых программ, но и сам, в значительной степени, был одноразовой программой. Перл начал свою жизнь как коллекция утилит для генерации отчётов, и эволюционировал в язык программирования только тогда, когда одноразовые программы, которые люди писали на нём, стали больше. Только после Перл 5 (если не позже) язык стал пригодным для написания серьёзных программ, но уже тогда он был популярен в массах.
Что делает язык подходящим для написания одноразовых программ? Для начала он должен быть уже доступным. Одноразовые программы это что-то, что по вашему мнению, вы напишите за час. Так что, язык уже должен быть установлен на вашем компьютере. Это не должно быть что-то, что нужно устанавливать перед использованием. Оно уже должно быть здесь. C поставлялся вместе с операционной системой. Перл первоначально являлся инструментом для системного администрирования, и вы уже установили его.
Быть доступным означает большее чем просто быть установленным. Интерактивный язык, с интерфейсом командной строки, более доступен чем, тот язык, с которым приходится компилировать и запускать программы раздельно. Популярный язык программирования должен быть интерактивным и быстро запускаться.
Другой вещью, которую вам хочется иметь в одноразовых программах -- это краткость. Краткость всегда привлекательна для хакеров, и в наибольшей степени в программах, которые они собираются написать за час.
//**************************************
Примечания
[1] Макросы, очень похожие на современное представление о них, были предложены Тимоти Хартом (Timothy Hart) в 1964 году, через два года после того как Lisp 1.5 был выпущен. Изначально, недоставало способов избежать variable capture и multiple evaluation; Hart's examples are subject to both.
[2] В "When the Air Hits Your Brain", нейрохирург Франк Вертосик (Frank Vertosick) приводит разговор в котором его chief resident, Гари, говорит о различие между хирургами и терапевтами ("вшами"):
Гари и я заказали большую пиццу и нашли открытую кабинку. Главный зажёг сигарету. "Посмотри на этих проклятых вшей, тараторят о каких-то болезнях, которые они повстречают раз в жизни. Вот в чём проблема со вшами, им нравится исключительно странные вещи. Они ненавидят то, чем они зарабатывают себе на хлеб и масло. Вот в чём разница между нами и трахаными вшами. Видишь, мы любим большие сочные грыжы межпозвонкового диска, а они ненавидят гипертонию..."
Мне Трудно думать о грыжах межпозвонкового диска как о чём-то сочном (кроме как буквально). Но всё же, я думаю, что знаю, что они имеют в виду. Мне часто приходилось ловить больших сочных жуков(bug -- жук). Непрограммисту может быть трудно представить, что можно получать удовольствие от работы с жуками. Конечно, было бы лучше, если всё просто работало. И это так, с одной стороны. И всё же, в выслеживании определённых типов жуков присутствует мрачное удовлетворение.
Как по команде телеканалы начали крутить фильмы о конце света в 2012 году, что это -- воля Кремля или происки НЛО?
Истерия вокруг 2012 -- прикольно, выражаясь современным русским языком.
Какие могут быть объяснения помимо Апокалипсиса? Да целая куча и одно другого невероятнее.
Сетевая истерия -- у нас есть всемирная сеть, сетевые сообщества кибер-преступников, сетевой маркетинг, сети супермаркетов, беспроводные сети, почему бы не быть и сетевой истерии. Есть очень удачная дата 2012 -- календарь майя, ЕВРО-2012, солнечные циклы, Олимпиада-2012, Книга Перемен, Мерлин, високосный год, начинающийся в Воскресение, шаманы, переизбрание Путина, нестабильный ближний восток, обещания вывести войска и т.д.
Предложения выиграть мобильник -- было, предложение заработать кликая -- было, оптимизация страниц -- тоже было, нужны новые идеи на счёт того как сгенерировать траффик, а чем конец света хуже мобильника? Один попробовал -- получилось, второй, третий и вот интернет переполнен пророчествами о конце света в 2012 году. Потом подключились профессиональные шарлатаны (экстрасенсы, астрологи, шаманы, маги) нужны новые рецепты лапши на уши и из интернета всё это выплеснулось на теле-экраны, а там пошли книги авторов, которы якобы работали над этой проблемой в течении 20 лет (начали писать месяц назад), интервью и так далее, липовые "Университеты Олдкасла" и т.д и т.п.
А за ними подтянулись и российские центральные каналы -- нужно же хоть как-то зрителя привлекать, сериалы уже всех достали, танцы и пляски с артистами тоже, кино снимать так и не научились -- вот и ставит канал с красивым названием "Россия", а так же Первый Мистический документальные фильмы про конец света в 2012 году, на России даже одного учёного показывали, который в течении 2-3 минут опровергал эту теорию, правда сторонники говорили больше часа. Первый мистический был более категоричен и учёного не пустили.
НЛП -- нейро-лингвистическое программирование электората. Время ставить якоря, и время их активизировать. Людям внушается страх перед тем, что произойдёт в 2012 году. Ко времени выборов президента России всё это забудется на сознательном уровне. Но осадок, некое беспокойство, останется, а тут появляется кандидат, который начинает вещать подобными фразами -- "Мы не допустим того, чтобы некие силы разрушали мир", "мы не дадим им разрушить нашу цивилизацию и культуру", "Россия должна встать грудью за мир", говорить он будет о мире как о состоянии не-войны, а не как о планете, хотя и подобная риторика тоже возможна (глобальное потепление). И старые якоря сработают, и этому кандидату будут обеспечены дополнительные 5-10% голосов не очень думающих избирателей.
Истерия вокруг 2012 -- прикольно, выражаясь современным русским языком.
Какие могут быть объяснения помимо Апокалипсиса? Да целая куча и одно другого невероятнее.
Сетевая истерия -- у нас есть всемирная сеть, сетевые сообщества кибер-преступников, сетевой маркетинг, сети супермаркетов, беспроводные сети, почему бы не быть и сетевой истерии. Есть очень удачная дата 2012 -- календарь майя, ЕВРО-2012, солнечные циклы, Олимпиада-2012, Книга Перемен, Мерлин, високосный год, начинающийся в Воскресение, шаманы, переизбрание Путина, нестабильный ближний восток, обещания вывести войска и т.д.
Предложения выиграть мобильник -- было, предложение заработать кликая -- было, оптимизация страниц -- тоже было, нужны новые идеи на счёт того как сгенерировать траффик, а чем конец света хуже мобильника? Один попробовал -- получилось, второй, третий и вот интернет переполнен пророчествами о конце света в 2012 году. Потом подключились профессиональные шарлатаны (экстрасенсы, астрологи, шаманы, маги) нужны новые рецепты лапши на уши и из интернета всё это выплеснулось на теле-экраны, а там пошли книги авторов, которы якобы работали над этой проблемой в течении 20 лет (начали писать месяц назад), интервью и так далее, липовые "Университеты Олдкасла" и т.д и т.п.
А за ними подтянулись и российские центральные каналы -- нужно же хоть как-то зрителя привлекать, сериалы уже всех достали, танцы и пляски с артистами тоже, кино снимать так и не научились -- вот и ставит канал с красивым названием "Россия", а так же Первый Мистический документальные фильмы про конец света в 2012 году, на России даже одного учёного показывали, который в течении 2-3 минут опровергал эту теорию, правда сторонники говорили больше часа. Первый мистический был более категоричен и учёного не пустили.
НЛП -- нейро-лингвистическое программирование электората. Время ставить якоря, и время их активизировать. Людям внушается страх перед тем, что произойдёт в 2012 году. Ко времени выборов президента России всё это забудется на сознательном уровне. Но осадок, некое беспокойство, останется, а тут появляется кандидат, который начинает вещать подобными фразами -- "Мы не допустим того, чтобы некие силы разрушали мир", "мы не дадим им разрушить нашу цивилизацию и культуру", "Россия должна встать грудью за мир", говорить он будет о мире как о состоянии не-войны, а не как о планете, хотя и подобная риторика тоже возможна (глобальное потепление). И старые якоря сработают, и этому кандидату будут обеспечены дополнительные 5-10% голосов не очень думающих избирателей.
А ты уделяешь достаточно много времени и сил на изучение языка?
Сколько лет ты потратил на изучение языка?
Ты постоянно воспринимаешь язык: слышишь его, читаешь на нём?
Ты постоянно говоришь, пишешь и думаешь на этом языке?
Нет, так чего ты хотел?
Практически все первые два десятка лет жизни современного человека посвящены изучению родного языка, каждый день мы говорим, пишем, думаем, слышим, читаем используя родной язык.
Подумай о том количестве диктантов, сочинений, изложений, лекций, курсовых, рефератов, которые ты написал в школе и ВУЗе, о том количестве учебников, лекций, фильмов, спектаклей, которые ты прочитал, увидел, услышал, о том количестве разговоров, в которых ты участвовал, которые ты слышал, и ты поймёшь, как нужно учить иностранный язык.
Сколько уроков родного языка было у тебя в школе каждую неделю? Сколько времени твои родители, воспитатели и учителя потратили на то, чтобы обучить тебя хотябы азам языка?
А сколько времени ты потратил на изучение иностранного языка?
Полтора года занятий по три часа в неделю, посмотрел пару фильмов с субтитрами, прочитал одну книжку, адаптированную по методу Ильи Франка, и пол не-адаптированной книжки (Алиса в стране чудес, да, я угадал?), съездил на две недели за границу, где, в основном, общался со своими рускоговорящими одногрупниками?
Наивняк!
Хочешь понять как стать спецом в какой-либо области прочти этот очерк Питера Норвига -- "Научись программировать за ДЕСЯТЬ ЛЕТ" (Peter Norvig -- Teach Yourself Programming in Ten Years (http://norvig.com/21-days.html)).
Изучи грамматику и основной словарный запас(1000-1500 слов -- http://wordlist.narod.ru) по хорошему учебнику или в группе.
Читай о том, что тебе нравится (используй Wikipedia), читай книги, которые тебе нравятся, смотри фильмы, мультфильмы, телепередачи, которые тебе нравятся, слушай песни которые тебе нравятся (найдя текст песни в Интернете), главное -- чтобы изучение языка было интересным и доставляло тебе удовольствие.
Веди дневник на иностранном языке.
Общайся на иностранном языке в Интернете, в оффлайне и даже в реале и астрале.
Постоянно повторяй пройденое (особенно слова, грамматику и всё прочее).
Занимайся всем этим, хотя бы, в течении 5-7 лет и ты, может быть, освоишь иностранный язык достаточно хорошо.
А если ты не хочешь тратить столько времени и усилий на иняз, то займись чем-нибудь ещё.
Сколько лет ты потратил на изучение языка?
Ты постоянно воспринимаешь язык: слышишь его, читаешь на нём?
Ты постоянно говоришь, пишешь и думаешь на этом языке?
Нет, так чего ты хотел?
Практически все первые два десятка лет жизни современного человека посвящены изучению родного языка, каждый день мы говорим, пишем, думаем, слышим, читаем используя родной язык.
Подумай о том количестве диктантов, сочинений, изложений, лекций, курсовых, рефератов, которые ты написал в школе и ВУЗе, о том количестве учебников, лекций, фильмов, спектаклей, которые ты прочитал, увидел, услышал, о том количестве разговоров, в которых ты участвовал, которые ты слышал, и ты поймёшь, как нужно учить иностранный язык.
Сколько уроков родного языка было у тебя в школе каждую неделю? Сколько времени твои родители, воспитатели и учителя потратили на то, чтобы обучить тебя хотябы азам языка?
А сколько времени ты потратил на изучение иностранного языка?
Полтора года занятий по три часа в неделю, посмотрел пару фильмов с субтитрами, прочитал одну книжку, адаптированную по методу Ильи Франка, и пол не-адаптированной книжки (Алиса в стране чудес, да, я угадал?), съездил на две недели за границу, где, в основном, общался со своими рускоговорящими одногрупниками?
Наивняк!
Хочешь понять как стать спецом в какой-либо области прочти этот очерк Питера Норвига -- "Научись программировать за ДЕСЯТЬ ЛЕТ" (Peter Norvig -- Teach Yourself Programming in Ten Years (http://norvig.com/21-days.html)).
Изучи грамматику и основной словарный запас(1000-1500 слов -- http://wordlist.narod.ru) по хорошему учебнику или в группе.
Читай о том, что тебе нравится (используй Wikipedia), читай книги, которые тебе нравятся, смотри фильмы, мультфильмы, телепередачи, которые тебе нравятся, слушай песни которые тебе нравятся (найдя текст песни в Интернете), главное -- чтобы изучение языка было интересным и доставляло тебе удовольствие.
Веди дневник на иностранном языке.
Общайся на иностранном языке в Интернете, в оффлайне и даже в реале и астрале.
Постоянно повторяй пройденое (особенно слова, грамматику и всё прочее).
Занимайся всем этим, хотя бы, в течении 5-7 лет и ты, может быть, освоишь иностранный язык достаточно хорошо.
А если ты не хочешь тратить столько времени и усилий на иняз, то займись чем-нибудь ещё.
Paul Grehem -- What Languages Fix
Кевин Келлехер (Kevin Kelleher) предложил интересный способ сравнивать языки программирования: описать каждый в терминах решаемой им задачи.
Удивительно, как хорошо языки могут быть описанны таким образом.
Algol: Ассемблер слишком низкоуровнен.
- Assembly language is too low-level.
Pascal: В Анголе недостаточно типов данных.
- Algol doesn't have enough data types.
Modula: Pascal слишком хлипок для системного программирования.
- Pascal is too wimpy for systems programming.
Simula: Ангол недостаточно хорош для симуляций.
- Algol isn't good enough at simulations.
Smalltalk: В Simula не всё является объектами.
- Not everything in Simula is an object.
Fortran: Ассемблер слишком низкоуровнен.
- Assembly language is too low-level.
Cobol: Fortran страшен.
- Fortran is scary.
PL/1: В Fortran недостаточно типов данных.
- Fortran doesn't have enough data types.
Ada: В каждом существующем языке чего-нибудь да не хватает.
- Every existing language is missing something.
Basic: Fortran страшен.
- Fortran is scary.
APL: Fortran недостаточно хорош для манипуляций массивами.
- Fortran isn't good enough at manipulating arrays.
J: APL требует собственной раскладки клавиатуры.
- APL requires its own character set.
C: Ассемблер слишком низкоуровнен.
- Assemby language is too low-level.
C++: C слишком низкоуровнен.
- C is too low-level.
Java: C++ is a kludge. Microsoft is going to crush us.
- C++ это вариантная запись (kludge). И Мелкомягкие собираются сокрушить нас.
C#: Java контролируется Sun.
- Java is controlled by Sun.
Lisp: Машины Тюринга это неудобный способ для описания вычислений.
- Turing Machines are an awkward way to describe computation.
Scheme: MacList -- вариантная запись.
- MacLisp is a kludge.
T: В Scheme нет библиотек.
- Scheme has no libraries.
Common Lisp: Развелось слишком много диалектов Lisp.
- There are too many dialects of Lisp.
Dylan: В Scheme нет библиотек, а синтаксис Lisp страшен.
- Scheme has no libraries, and Lisp syntax is scary.
Perl: Языки оболочек scripts/awk/sed недостаточно похожи на языки программирования.
- Shell scripts/awk/sed are not enough like programming languages.
Python: Perl -- вариантная запись.
- Perl is a kludge.
Ruby: Perl -- вариантная запись, а синтаксис Lisp страшен.
- Perl is a kludge, and Lisp syntax is scary.
Prolog: Программирование недостаточно похоже на логические размышления.
- Programming is not enough like logic.
- Mood:
chipper
Распечатал -- в тюрьму!
Перевод рассказа "Printcrime" Кори Доктороу (Cory Doctorow) из цикла Overclocked
Копы раздолбали принтер моего отца, когда мне было восемь лет.
Я помню горячий, запах работающей электроники, и яростно сосредоточенный вид заполняющего его свежим раствором Па, и тёплое, "с пылу, с жару" чувство при виде выходящих из него предметов.
Копы вломились в дверь, размахивая дубинками, один из них цитировал условия ордена через громкоговоритель. Один из клиентов отца продал его. Э-Полиция заплатила ему высококлассными фарматиками -- увеличителями скорости реакции, добавочной памятью, ускорителями метаболизма. Вещами, стоящими целое состояние; вещами, которые вы можете напечатать у себя дома, если риск, что ваша кухня окажется заполненной кучей больших, пузатых тел, крушащих всё на своём пути, и жёстких дубинок, свистящих в воздухе.
Они уничтожили бабушкин дорожный сундук, привезённый из другой страны. Они разбили наш маленький холодильник и очиститель воздуха. Моя канарейка избежала смерти, спрятавшись в углу своей клетки, когда большая, обутая в сапог, нога превратила клетку в мрачно выглядящий клубок проводов от принтера.
Па. Что они с ним сделали. Когда его уводили он выглядел так, как будто подрался с целой регбийной командой. Они вытащили его за дверь, а когда они его заталкивали в машину они позволили телевизионщикам хорошенько его рассмотреть, а в это время представитель полиции вещал всему миру, что организованно-преступная затея моего Па по производству контра-факта нанесла убытков на двадцать миллионов, и что мой Па, отъявленный негодяй, сопротивлялся аресту.
Я смотрела это всё с помощью моего мобильного телефона, сидя в развалинах гостинной, видя всё это на экране и удивляясь тому, как кто-то может смотреть на нашу маленькую квартиру и наше ужасное, *manky* хозяйство и ошибочно принять его за логово главаря организованной преступности. Конечно-же, они унесли принтер, и показали его как трофей телевизионщикам. Пустое место, которое он занимал на кухне, выглядит отвратительно пусто. После того как я встала, прибралась в квартире, освободила мою бедную чирикующую птичку, я поместила туда блендер. Он был собран из распечатанных деталей, так что он продержится ещё месяц до того, как мне придётся распечатывать новые подшипники и другие движущиеся части. Тогда я смогу перебрать и снова собрать его заменив всё то, что может быть распечатано.
К тому времени, когда мне исполнилось восемнадцать, они были готовы выпустить моего отца из тюрьмы. Я посещала его трижды -- на мой десятый день рождения, на его пятидесятый, и когда Ма умерла. Прошло два года с тех пор как я его видела и он был в плохой форме. Тюремная драка сделала его хромым, и он глядел через плечо так часто, что это выглядело нервным тиком. Я была смущена, когда мы вышли из такси напротив нашего дома, и пыталась держаться на растоянии от этого разбитого, хромающего скелета, когда мы поднимались по ступеням лестницы.
"Лени", произнёс он, когда мы сели. "Ты умная девочка, я заню это. Знайка. Ты не знаешь где твой старый Па мог бы раздобыть принтер и немного раствора?"
Я сжала кулаки так сильно, что ногти врезались в ладони. Я закрыла глаза. "Ты был в тюрьме десять лет, Па. Десять. Лет. Ты собираешься рисковать десятью годами для того чтобы распечатать ещё несколько блендеров, фарматиков, ещё несколько компьютеров и дизайнерских шляп?"
Он ухмыльнулся. "Я не так глуп, Лени. Я выучил свой урок. Компы и шляпы не стоят того, чтобы из-за них садиться в тюрьму. Я больше не собираюсь печатать весь этот мусор, никогда." Он взял чашку чая и выпил её так, как будто это было виски -- маленький глоток, а затем длинный, удовлетворённый выдох. Он закрыл глаза и откинулся назад в своём кресле.
"Подойди сюда, Лени, позволь мне прошептать кое-что в твоё ушко. Позволь мне рассказать тебе о том, что я решил сделать сидя в кутузке. Подойди и послушай своего глупого Па".
Я ощутила острое чувство вины за то, что то что растревожила его. Он был не в себе, это было ясно. Только один господь знает, через что ему пришлось пройти в тюрьме. "Что, Па?" спросила я, подходя ближе.
"Лени, я собираюсь печатать другие принтеры. Много других принтеров. Каждому человеку по принтеру. Это стоит того, чтобы сесть в тюрьму. Ради этого я готов на всё".
//************************************** ************************
Это произведение распространяется на условиях лицензии Creative Commons -- Attribution-NonCommercial-ShareAlike 2.5 (by-nc-sa)
"С указанием авторства — Некоммерческая — С сохранением условий"
Эта лицензия позволяет вам перерабатывать, исправлять и развивать произведение на некоммерческой основе, до тех пор пока вы упоминаете авторство и лицензируете производные работы на аналогичных лицензионных условиях.
Вы можете не только загружать произведение и в дальнейшем распространять его на условиях, идентичных лицензии «by-nc-sa», но и переводить, создавать иные производные работы, основанные на произведении. Все новые произведения, основанные на исходном, должны распространяться на условиях одной лицензии, поэтому все производные работы также будут носить некоммерческий характер.
Перевод рассказа "Printcrime" Кори Доктороу (Cory Doctorow) из цикла Overclocked
Копы раздолбали принтер моего отца, когда мне было восемь лет.
Я помню горячий, запах работающей электроники, и яростно сосредоточенный вид заполняющего его свежим раствором Па, и тёплое, "с пылу, с жару" чувство при виде выходящих из него предметов.
Копы вломились в дверь, размахивая дубинками, один из них цитировал условия ордена через громкоговоритель. Один из клиентов отца продал его. Э-Полиция заплатила ему высококлассными фарматиками -- увеличителями скорости реакции, добавочной памятью, ускорителями метаболизма. Вещами, стоящими целое состояние; вещами, которые вы можете напечатать у себя дома, если риск, что ваша кухня окажется заполненной кучей больших, пузатых тел, крушащих всё на своём пути, и жёстких дубинок, свистящих в воздухе.
Они уничтожили бабушкин дорожный сундук, привезённый из другой страны. Они разбили наш маленький холодильник и очиститель воздуха. Моя канарейка избежала смерти, спрятавшись в углу своей клетки, когда большая, обутая в сапог, нога превратила клетку в мрачно выглядящий клубок проводов от принтера.
Па. Что они с ним сделали. Когда его уводили он выглядел так, как будто подрался с целой регбийной командой. Они вытащили его за дверь, а когда они его заталкивали в машину они позволили телевизионщикам хорошенько его рассмотреть, а в это время представитель полиции вещал всему миру, что организованно-преступная затея моего Па по производству контра-факта нанесла убытков на двадцать миллионов, и что мой Па, отъявленный негодяй, сопротивлялся аресту.
Я смотрела это всё с помощью моего мобильного телефона, сидя в развалинах гостинной, видя всё это на экране и удивляясь тому, как кто-то может смотреть на нашу маленькую квартиру и наше ужасное, *manky* хозяйство и ошибочно принять его за логово главаря организованной преступности. Конечно-же, они унесли принтер, и показали его как трофей телевизионщикам. Пустое место, которое он занимал на кухне, выглядит отвратительно пусто. После того как я встала, прибралась в квартире, освободила мою бедную чирикующую птичку, я поместила туда блендер. Он был собран из распечатанных деталей, так что он продержится ещё месяц до того, как мне придётся распечатывать новые подшипники и другие движущиеся части. Тогда я смогу перебрать и снова собрать его заменив всё то, что может быть распечатано.
К тому времени, когда мне исполнилось восемнадцать, они были готовы выпустить моего отца из тюрьмы. Я посещала его трижды -- на мой десятый день рождения, на его пятидесятый, и когда Ма умерла. Прошло два года с тех пор как я его видела и он был в плохой форме. Тюремная драка сделала его хромым, и он глядел через плечо так часто, что это выглядело нервным тиком. Я была смущена, когда мы вышли из такси напротив нашего дома, и пыталась держаться на растоянии от этого разбитого, хромающего скелета, когда мы поднимались по ступеням лестницы.
"Лени", произнёс он, когда мы сели. "Ты умная девочка, я заню это. Знайка. Ты не знаешь где твой старый Па мог бы раздобыть принтер и немного раствора?"
Я сжала кулаки так сильно, что ногти врезались в ладони. Я закрыла глаза. "Ты был в тюрьме десять лет, Па. Десять. Лет. Ты собираешься рисковать десятью годами для того чтобы распечатать ещё несколько блендеров, фарматиков, ещё несколько компьютеров и дизайнерских шляп?"
Он ухмыльнулся. "Я не так глуп, Лени. Я выучил свой урок. Компы и шляпы не стоят того, чтобы из-за них садиться в тюрьму. Я больше не собираюсь печатать весь этот мусор, никогда." Он взял чашку чая и выпил её так, как будто это было виски -- маленький глоток, а затем длинный, удовлетворённый выдох. Он закрыл глаза и откинулся назад в своём кресле.
"Подойди сюда, Лени, позволь мне прошептать кое-что в твоё ушко. Позволь мне рассказать тебе о том, что я решил сделать сидя в кутузке. Подойди и послушай своего глупого Па".
Я ощутила острое чувство вины за то, что то что растревожила его. Он был не в себе, это было ясно. Только один господь знает, через что ему пришлось пройти в тюрьме. "Что, Па?" спросила я, подходя ближе.
"Лени, я собираюсь печатать другие принтеры. Много других принтеров. Каждому человеку по принтеру. Это стоит того, чтобы сесть в тюрьму. Ради этого я готов на всё".
//**************************************
Это произведение распространяется на условиях лицензии Creative Commons -- Attribution-NonCommercial-ShareAlike 2.5 (by-nc-sa)
"С указанием авторства — Некоммерческая — С сохранением условий"
Эта лицензия позволяет вам перерабатывать, исправлять и развивать произведение на некоммерческой основе, до тех пор пока вы упоминаете авторство и лицензируете производные работы на аналогичных лицензионных условиях.
Вы можете не только загружать произведение и в дальнейшем распространять его на условиях, идентичных лицензии «by-nc-sa», но и переводить, создавать иные производные работы, основанные на произведении. Все новые произведения, основанные на исходном, должны распространяться на условиях одной лицензии, поэтому все производные работы также будут носить некоммерческий характер.
- Music:royksopp
Перевод очерка Пола Грэхема -- "Made in USA"
Ноябрь 2004
(Это новый очерк, написанный для японского издания "Хакеров и художников".
Этот очерк пытается объяснить почему американцы делают хорошо одни вещи, а другие плохо.)
Несколько лет назад одна моя итальянская подруга путешествовала на поезде из Бостона в Провиденс. На тот момент, она провела в Америке только пару недель и видела немного. По приезду она выглядела удивленной.
"Так уродливо!".
Люди из других богатых стран с трудом представляют убожество рукотворных кусочков Америки. В книгах о путешествиях им показывают в основном природу: Большой Каньон, сплав на плотах, лошадей в поле.
Если вы видите изображения рукотворных объектов, то это будет или панорамный вид Нью-Йорка, снятый с благоразумного расстояния, или же тщательно выбранное изображение прибрежного городка в Мэне.
Как такое возможно, должно быть, удивляются приезжие. Как может богатейшая страна выглядеть таким образом?
Как это не странно, но это может быть и неслучайно. Американцы хороши в одних вещах, и плохи в остальном. Мы хороши в создании фильмов и программного обеспечения, и плохи в создании автомобилей и городов. Я думаю, что мы хороши в том в чём мы хороши по той же самой причине, почему мы плохи в том в чём мы плохи. Мы нетерпеливы. В Америке, если вы хотите что-то сделать, вы не беспокоитесь о том, что это может выйти плохо, или нарушить деликатное социальное равновесие, или о том что люди подумают о вас, будто вы пытаетесь прыгнуть выше головы.
Если вы хотите что-то сделать, то, как говорит Nike, "просто делайте это".
Это хорошо работает в одних областях и плохо в других. Я догадываюсь, что это хорошо работает с кино и софтом из-за того, что это - раздолбайские процессы. "Систематичность" это последнее слово для описания того, как хороший программист пишет софт. Код это не то, что тщательно собирают после всеобъемлющего планирования, как пирамиды.
Это что-то во что бросаются сломя голову, трудятся быстро и постоянно изменяют своё мнение, как при создании наброска мелом.
С программным обеспечением, как бы парадоксально это не звучало, хороший уровень мастерства предполагает быструю работу. Если вы работаете медленно и методично, то в конце-концов вы получаете просто хорошую реализацию своей первоначальной ошибочной идеи. Медленная и методичная работа - это преждевременная оптимизация. Лучше всего быстро разработать прототип, и посмотреть какие новые идеи он даёт.
Создание фильмов происходит так же как и создание программного обеспечения. Каждый фильм это Франкенштейн, полный несовершенств и обычно достаточно далёк от первоначального виденья.
Но интересен, и закончен довольно быстро.
Я думаю, мы достигли многого таким образом с фильмами и программным обеспечением из-за того что это податливый материал.
Смелость вознаграждается. И если в последнюю минуту две части не полностью подходят друг к другу, то можно придумать какой-нибудь хак, по крайней мере, облегчающий проблему.
Но это не так с машинами и городами.
Они слишком материальны. Если бы авто-промышленность работала как софтостроение или киноиндустрия, то вы бы попытались бы обойти конкурентов производя автомобиль весящий всего пятьдесят фунтов, или складывающийся до размеров мотоцикла когда вы хотите припарковать его.
Но у материальных продуктов больше ограничений. Вы не можете выиграть значительными нововведениями столько же сколько хорошим вкусом и вниманием к деталям.
Неприятность заключается в том, что само слово "вкус" звучит слегка нелепо для американского уха. Оно кажется претенциозным, или легкомысленным, или даже женственным. Голубые статоры!!(Blue staters) считают, что он "субъективен", а красные статоры!! - что он для неженок. Так что, любой кто действительно заботится о дизайне в Америке будет плыть против ветра.
Двадцать лет назад мы постоянно слышали, что главная проблема авто-индустрии США заключается в рабочих. Сейчас, когда японские компании делают автомобили в США, этого больше не слышно.
Проблема американских автомобилей заключается в плохом дизайне.
Это можно увидеть просто глядя на них.
Все эти дополнительные куски металла на AMC Matador не были добавлены рабочими. Проблема этого автомобиля, как и с остальными американскими автомобилями сегодня, заключается в том, что он был разработан людьми из маркетинга, вместо дизайнеров.
Почему японцы делают лучшие машины чем делаем мы?
Некоторые скажут, что это из-за того что их культура поощряет сотрудничество.
Частично это так.
Но в данном случае, более соответствующим данному вопросу кажется то, что их культура ценит дизайн и мастерство.
Веками японцы делали более прекрасные вещи, чем то, чем мы владеем на западе. Когда вы смотрите на меч, сделанный ими в 1200, то вы просто не можите поверить в то, что дата на ярлычке верна. Наверное их машины лучше чем наши по той же причине, почему и их столярное ремесло всегда было лучше. Они одержимы идеей делать вещи хорошо.
Но не мы.
Когда мы в Америке что-то делаем - наша цель просто выполнить работу.
Как только мы этого добиваемся мы идём по одному из двух путей.
Мы можем остановиться на этом, и получить нечто грубое и пригодное к эксплуатации, как Vice-grip. Или же, мы можем улучшать это, что обычно означает украшение бессмысленным орнаментом. Когда мы хотим сделать авто "лучше", мы прилепляем хвостовые плавники на неё, или делаем её длиннее, или уменьшаем окна, в зависимости от современной моды.
Тоже самое относится и к домам.
В Америке вы можете владеть или непрочной коробкой, собранной из двух-четырёх частей и со стенами из фанеры(drywall), или McMansion - непрочной коробкой, собранной из двух-четырёх частей и со стенами из фанеры(drywall), но больше, выглядящим более внушительно, и полным дорогой обстановкой. Богатые люди не получают лучший дизайн или лучшее качество; они получают более крупную, более заметную версию стандартного дома.
Мы не особо ценим дизайн или мастерство в этом.
Нам нравится скорость, и мы желаем делать что-нибудь уродливо для того чтобы сделать это быстро. В некоторых областях, таких как программное обеспечение или кино, - это чистая победа.
Но не только фильмы и программы являются податливыми средами.
В таких областях бизнеса, дизайнеры(хотя, в основном их так не называют) обладают большей властью. Компании создающие ПО, по крайней мере удачливые, в основном управляются программистами.
В киноиндустрии, несмотря на то, что продюссер может указывать режисёру, режисёр контролирует большую часть того, что появится на экране. И таким образом американское ПО и фильмы и японские автомобили, схожи в том, что руководство заботится о дизайне - первые из-за того что дизайнеры руководят, а вторые из-за того что вся культура озабочена дизайн.
Я думаю, что большая часть японских руководителей ужаснётся от идеи сделать плохой автомобиль. В то время, как большая часть американских руководителей до сих пор верит в то, что в автомобиле наиболее важно то, какой образ он выражает.
-- Сделать хороший автомобиль?
-- Что значит "хороший"?
-- Это так субъективно.
Если вы хотите узнать как спроектировать хороший автомобиль - спросите у фокус-группы.
Вместо того чтобы полагаться на свой внутренний дизайн-компас(как это делал Генри Форд), американские автомобильные компании пытаются заставить людей из маркетинга выяснить чего хотят потребители.
Но это не работает. Доля рынка американских автомобилей продолжает сокращаться. И причина в том, что потребитель не хочет того, что, как он думает, он хочет.
Позволяя фокус-группам разрабатывать ваши автомобили за вас, вы получаете только краткосрочное преимущество. В долгосрочном плане, такой подход проигрывает качественному дизайну. Фокусная группа может сказать, что им хочется показную фишку-однодневку, но ещё больше они хотят изобразить изощрённых покупателей, и они, хотя и меньшинство из них, действительно заботятся о хорошем дизайне. В конце концов сутенёры и наркоторговцы заметили, что врачи и юристы переключились с Кадилака на Лексус, и сделали то же самое.
Apple является интересным примером подхода обратного основной американской традиции. Если вы хотите приобрести милый CD плейер, то вы скорее всего купите японский. Но если вы хотите купить MP3 плейер, то скорее всего, приобретёте iPod.
Что произошло?
Почему Sony не доминирует на рынке MP3 плейеров?
Из-за того что Apple сейчас в бизнессе потребительской электроники, и в отличее от других американских компаний, они одержимы хорошим дизайном.
Или, более точно, их CEO одержим.
Я только что достал один iPod, и он не просто приятен.
Он удивительно приятен. Для того чтобы удивить меня, он должен был удовлетворять те ожидания о которых я даже не знал, что у меня они есть.
Ни одна фокус группа не обнаружит этого.
Только великие дизайнеры могут.
Машины это не худшее, что производится в Америке. Наши города, а вернее exurbs!! - пример того, где модель "просто делай это" терпит неудачу наиболее явно. Если масштаб работы застройщика достаточно велик, если он возводит целый город, рыночные силы будут вынуждать его возводить города не являющиеся отстоем. Но если они строят зараз только пару офисных зданий или улицу в пригороде, то результат настолько подавляющий, что обитатели рассматривают полет в Европу на пару недель для того чтобы просто пожить в условиях обычных для местных жителей, как отличное лечение.
Но модель "просто делай это" имеет свои преимущества. Она в чистую выигрывает в создании богатства и технических инноваций (которые являются практически одним и тем же). Я предполагаю, что причина в скорости. Сложно создать богатство создавая обычные вещи.
Настоящая ценность в новых вещах, и если вы хотите быть первым в создании чего-либо, то вам стоит работать быстро. Хорошо это или плохо, модель "просто делая это" - быстра, являетесь ли вы Деном Бриклином, пишущим прототип VisiCalc за одни выходные, или застройщиком строящим квартал дрянных жилых домов за месяц.
Если мне пришлось выбирать между моделью "просто-делай-это" и тщательной моделью, то я, вероятно выбрал-бы модель-"просто-делай-это". Но должны ли мы выбирать?
Не можем ли мы идти двумя путями? Могут ли американцы жить в приятных домах без подрыва нетерпеливого духа индивидуальности, делающего нас настолько сильными в создании ПО? Могут ли другие страны добавить больше индивидуализма в свои технологические компании и исследовательские лаборатории?(without having it metastasize as strip malls?)
Я оптимист.
Трудно сказать о других странах, но, по крайней мере, в США мы можем обладать и тем и другим.
Apple является вдохновляющим примером. Они умудрились сохранить достаточно нетерпеливого, хакерского духа, необходимого для написания софта. Но когда вы берёте настольный компьютер Apple он не выглядит американским. Он слишком совершенен. Он выглядит так, как будто он был сделан шведской или японской компанией.
Во многих технологиях версия 2 имеет большее разрешение.
Но почему не в дизайне? Я думаю, что постепенно мы будем видеть как национальные черты будут сменяться профессиональными: хакеры в Японии смогут вести себя с преднамеренностью, не выглядящей японской, а в Америке продукты будут разрабатываться с упором на вкус, который сейчас не показался бы американским. Возможно, наиболее удачливыми странами, в будущем будут наиболее желающие игнорировать национальные черты, и выполнять каждый тип работ способом, который работает лучше всего.
Готовтесь к гонке!
Замечания
[1]
Японские города тоже неприглядны, но по другой причине.
Япония склонна к землетрясениям, так что, здания традиционно считались чем-то временным; в Японии нет великих традиций планирования городов, подобных унаследованным Европой от Рима.
Другая причина - печально известные высокой коррупцией отношения между правительством и строительными компаниями.
Благодарности Trevor Blackwell, Barry Eisler, Sarah Harlin, Shiro Kawai, Jessica Livingston, Jackie McDonough, Robert Morris, and Eric Raymond за чтение черновиков.
Ноябрь 2004
(Это новый очерк, написанный для японского издания "Хакеров и художников".
Этот очерк пытается объяснить почему американцы делают хорошо одни вещи, а другие плохо.)
Несколько лет назад одна моя итальянская подруга путешествовала на поезде из Бостона в Провиденс. На тот момент, она провела в Америке только пару недель и видела немного. По приезду она выглядела удивленной.
"Так уродливо!".
Люди из других богатых стран с трудом представляют убожество рукотворных кусочков Америки. В книгах о путешествиях им показывают в основном природу: Большой Каньон, сплав на плотах, лошадей в поле.
Если вы видите изображения рукотворных объектов, то это будет или панорамный вид Нью-Йорка, снятый с благоразумного расстояния, или же тщательно выбранное изображение прибрежного городка в Мэне.
Как такое возможно, должно быть, удивляются приезжие. Как может богатейшая страна выглядеть таким образом?
Как это не странно, но это может быть и неслучайно. Американцы хороши в одних вещах, и плохи в остальном. Мы хороши в создании фильмов и программного обеспечения, и плохи в создании автомобилей и городов. Я думаю, что мы хороши в том в чём мы хороши по той же самой причине, почему мы плохи в том в чём мы плохи. Мы нетерпеливы. В Америке, если вы хотите что-то сделать, вы не беспокоитесь о том, что это может выйти плохо, или нарушить деликатное социальное равновесие, или о том что люди подумают о вас, будто вы пытаетесь прыгнуть выше головы.
Если вы хотите что-то сделать, то, как говорит Nike, "просто делайте это".
Это хорошо работает в одних областях и плохо в других. Я догадываюсь, что это хорошо работает с кино и софтом из-за того, что это - раздолбайские процессы. "Систематичность" это последнее слово для описания того, как хороший программист пишет софт. Код это не то, что тщательно собирают после всеобъемлющего планирования, как пирамиды.
Это что-то во что бросаются сломя голову, трудятся быстро и постоянно изменяют своё мнение, как при создании наброска мелом.
С программным обеспечением, как бы парадоксально это не звучало, хороший уровень мастерства предполагает быструю работу. Если вы работаете медленно и методично, то в конце-концов вы получаете просто хорошую реализацию своей первоначальной ошибочной идеи. Медленная и методичная работа - это преждевременная оптимизация. Лучше всего быстро разработать прототип, и посмотреть какие новые идеи он даёт.
Создание фильмов происходит так же как и создание программного обеспечения. Каждый фильм это Франкенштейн, полный несовершенств и обычно достаточно далёк от первоначального виденья.
Но интересен, и закончен довольно быстро.
Я думаю, мы достигли многого таким образом с фильмами и программным обеспечением из-за того что это податливый материал.
Смелость вознаграждается. И если в последнюю минуту две части не полностью подходят друг к другу, то можно придумать какой-нибудь хак, по крайней мере, облегчающий проблему.
Но это не так с машинами и городами.
Они слишком материальны. Если бы авто-промышленность работала как софтостроение или киноиндустрия, то вы бы попытались бы обойти конкурентов производя автомобиль весящий всего пятьдесят фунтов, или складывающийся до размеров мотоцикла когда вы хотите припарковать его.
Но у материальных продуктов больше ограничений. Вы не можете выиграть значительными нововведениями столько же сколько хорошим вкусом и вниманием к деталям.
Неприятность заключается в том, что само слово "вкус" звучит слегка нелепо для американского уха. Оно кажется претенциозным, или легкомысленным, или даже женственным. Голубые статоры!!(Blue staters) считают, что он "субъективен", а красные статоры!! - что он для неженок. Так что, любой кто действительно заботится о дизайне в Америке будет плыть против ветра.
Двадцать лет назад мы постоянно слышали, что главная проблема авто-индустрии США заключается в рабочих. Сейчас, когда японские компании делают автомобили в США, этого больше не слышно.
Проблема американских автомобилей заключается в плохом дизайне.
Это можно увидеть просто глядя на них.
Все эти дополнительные куски металла на AMC Matador не были добавлены рабочими. Проблема этого автомобиля, как и с остальными американскими автомобилями сегодня, заключается в том, что он был разработан людьми из маркетинга, вместо дизайнеров.
Почему японцы делают лучшие машины чем делаем мы?
Некоторые скажут, что это из-за того что их культура поощряет сотрудничество.
Частично это так.
Но в данном случае, более соответствующим данному вопросу кажется то, что их культура ценит дизайн и мастерство.
Веками японцы делали более прекрасные вещи, чем то, чем мы владеем на западе. Когда вы смотрите на меч, сделанный ими в 1200, то вы просто не можите поверить в то, что дата на ярлычке верна. Наверное их машины лучше чем наши по той же причине, почему и их столярное ремесло всегда было лучше. Они одержимы идеей делать вещи хорошо.
Но не мы.
Когда мы в Америке что-то делаем - наша цель просто выполнить работу.
Как только мы этого добиваемся мы идём по одному из двух путей.
Мы можем остановиться на этом, и получить нечто грубое и пригодное к эксплуатации, как Vice-grip. Или же, мы можем улучшать это, что обычно означает украшение бессмысленным орнаментом. Когда мы хотим сделать авто "лучше", мы прилепляем хвостовые плавники на неё, или делаем её длиннее, или уменьшаем окна, в зависимости от современной моды.
Тоже самое относится и к домам.
В Америке вы можете владеть или непрочной коробкой, собранной из двух-четырёх частей и со стенами из фанеры(drywall), или McMansion - непрочной коробкой, собранной из двух-четырёх частей и со стенами из фанеры(drywall), но больше, выглядящим более внушительно, и полным дорогой обстановкой. Богатые люди не получают лучший дизайн или лучшее качество; они получают более крупную, более заметную версию стандартного дома.
Мы не особо ценим дизайн или мастерство в этом.
Нам нравится скорость, и мы желаем делать что-нибудь уродливо для того чтобы сделать это быстро. В некоторых областях, таких как программное обеспечение или кино, - это чистая победа.
Но не только фильмы и программы являются податливыми средами.
В таких областях бизнеса, дизайнеры(хотя, в основном их так не называют) обладают большей властью. Компании создающие ПО, по крайней мере удачливые, в основном управляются программистами.
В киноиндустрии, несмотря на то, что продюссер может указывать режисёру, режисёр контролирует большую часть того, что появится на экране. И таким образом американское ПО и фильмы и японские автомобили, схожи в том, что руководство заботится о дизайне - первые из-за того что дизайнеры руководят, а вторые из-за того что вся культура озабочена дизайн.
Я думаю, что большая часть японских руководителей ужаснётся от идеи сделать плохой автомобиль. В то время, как большая часть американских руководителей до сих пор верит в то, что в автомобиле наиболее важно то, какой образ он выражает.
-- Сделать хороший автомобиль?
-- Что значит "хороший"?
-- Это так субъективно.
Если вы хотите узнать как спроектировать хороший автомобиль - спросите у фокус-группы.
Вместо того чтобы полагаться на свой внутренний дизайн-компас(как это делал Генри Форд), американские автомобильные компании пытаются заставить людей из маркетинга выяснить чего хотят потребители.
Но это не работает. Доля рынка американских автомобилей продолжает сокращаться. И причина в том, что потребитель не хочет того, что, как он думает, он хочет.
Позволяя фокус-группам разрабатывать ваши автомобили за вас, вы получаете только краткосрочное преимущество. В долгосрочном плане, такой подход проигрывает качественному дизайну. Фокусная группа может сказать, что им хочется показную фишку-однодневку, но ещё больше они хотят изобразить изощрённых покупателей, и они, хотя и меньшинство из них, действительно заботятся о хорошем дизайне. В конце концов сутенёры и наркоторговцы заметили, что врачи и юристы переключились с Кадилака на Лексус, и сделали то же самое.
Apple является интересным примером подхода обратного основной американской традиции. Если вы хотите приобрести милый CD плейер, то вы скорее всего купите японский. Но если вы хотите купить MP3 плейер, то скорее всего, приобретёте iPod.
Что произошло?
Почему Sony не доминирует на рынке MP3 плейеров?
Из-за того что Apple сейчас в бизнессе потребительской электроники, и в отличее от других американских компаний, они одержимы хорошим дизайном.
Или, более точно, их CEO одержим.
Я только что достал один iPod, и он не просто приятен.
Он удивительно приятен. Для того чтобы удивить меня, он должен был удовлетворять те ожидания о которых я даже не знал, что у меня они есть.
Ни одна фокус группа не обнаружит этого.
Только великие дизайнеры могут.
Машины это не худшее, что производится в Америке. Наши города, а вернее exurbs!! - пример того, где модель "просто делай это" терпит неудачу наиболее явно. Если масштаб работы застройщика достаточно велик, если он возводит целый город, рыночные силы будут вынуждать его возводить города не являющиеся отстоем. Но если они строят зараз только пару офисных зданий или улицу в пригороде, то результат настолько подавляющий, что обитатели рассматривают полет в Европу на пару недель для того чтобы просто пожить в условиях обычных для местных жителей, как отличное лечение.
Но модель "просто делай это" имеет свои преимущества. Она в чистую выигрывает в создании богатства и технических инноваций (которые являются практически одним и тем же). Я предполагаю, что причина в скорости. Сложно создать богатство создавая обычные вещи.
Настоящая ценность в новых вещах, и если вы хотите быть первым в создании чего-либо, то вам стоит работать быстро. Хорошо это или плохо, модель "просто делая это" - быстра, являетесь ли вы Деном Бриклином, пишущим прототип VisiCalc за одни выходные, или застройщиком строящим квартал дрянных жилых домов за месяц.
Если мне пришлось выбирать между моделью "просто-делай-это" и тщательной моделью, то я, вероятно выбрал-бы модель-"просто-делай-это". Но должны ли мы выбирать?
Не можем ли мы идти двумя путями? Могут ли американцы жить в приятных домах без подрыва нетерпеливого духа индивидуальности, делающего нас настолько сильными в создании ПО? Могут ли другие страны добавить больше индивидуализма в свои технологические компании и исследовательские лаборатории?(without having it metastasize as strip malls?)
Я оптимист.
Трудно сказать о других странах, но, по крайней мере, в США мы можем обладать и тем и другим.
Apple является вдохновляющим примером. Они умудрились сохранить достаточно нетерпеливого, хакерского духа, необходимого для написания софта. Но когда вы берёте настольный компьютер Apple он не выглядит американским. Он слишком совершенен. Он выглядит так, как будто он был сделан шведской или японской компанией.
Во многих технологиях версия 2 имеет большее разрешение.
Но почему не в дизайне? Я думаю, что постепенно мы будем видеть как национальные черты будут сменяться профессиональными: хакеры в Японии смогут вести себя с преднамеренностью, не выглядящей японской, а в Америке продукты будут разрабатываться с упором на вкус, который сейчас не показался бы американским. Возможно, наиболее удачливыми странами, в будущем будут наиболее желающие игнорировать национальные черты, и выполнять каждый тип работ способом, который работает лучше всего.
Готовтесь к гонке!
Замечания
[1]
Японские города тоже неприглядны, но по другой причине.
Япония склонна к землетрясениям, так что, здания традиционно считались чем-то временным; в Японии нет великих традиций планирования городов, подобных унаследованным Европой от Рима.
Другая причина - печально известные высокой коррупцией отношения между правительством и строительными компаниями.
Благодарности Trevor Blackwell, Barry Eisler, Sarah Harlin, Shiro Kawai, Jessica Livingston, Jackie McDonough, Robert Morris, and Eric Raymond за чтение черновиков.
Пытался три раза начать изучать татарский язык по учебнику --
Р.А. Сабиров
ТАТАРСКИЙ ЯЗЫК: ИЗУЧИТЬ ЛЕГКО!
и каждый раз бросал, сейчас учу турецкий по учебнику Турецкий за три
месяца Бенгису Рона и дело продвигается достаточно быстро.
Учебник Сабирова -- это просто нечто -- практически отсутствуют
примеры для нового материала, а те что есть слишком просты, учебник не
систематезирован, нет списков слов в уроках.
Я не заметил никаких правил согласования гласных и согласных.
Упражнения отсутствуют как класс.
Грамматика объясняется слишком невнятно.
Язык учебника абсолютно не адекватен -- слишко разговорный, слишком много персонального -- автору нравится то, не нравится сё.
ВЫВОД -- Учебник написан таким образом, что учить что-либо по нему невозможно, кроме того как *НЕ НАДО* писать учебники.
Что касается сайта, то прочитав рецензии решил со временем начать
изучение татарского по книге Ш. Асадуллина "Татарский язык в иноязычной
аудитории" -- так как здесь её ругают (и мне кажется, что г.Сабиров просто топит конкурентов).
Р.А. Сабиров
ТАТАРСКИЙ ЯЗЫК: ИЗУЧИТЬ ЛЕГКО!
и каждый раз бросал, сейчас учу турецкий по учебнику Турецкий за три
месяца Бенгису Рона и дело продвигается достаточно быстро.
Учебник Сабирова -- это просто нечто -- практически отсутствуют
примеры для нового материала, а те что есть слишком просты, учебник не
систематезирован, нет списков слов в уроках.
Я не заметил никаких правил согласования гласных и согласных.
Упражнения отсутствуют как класс.
Грамматика объясняется слишком невнятно.
Язык учебника абсолютно не адекватен -- слишко разговорный, слишком много персонального -- автору нравится то, не нравится сё.
ВЫВОД -- Учебник написан таким образом, что учить что-либо по нему невозможно, кроме того как *НЕ НАДО* писать учебники.
Что касается сайта, то прочитав рецензии решил со временем начать
изучение татарского по книге Ш. Асадуллина "Татарский язык в иноязычной
аудитории" -- так как здесь её ругают (и мне кажется, что г.Сабиров просто топит конкурентов).
- Mood:
enraged
Опровержение точки зрения пр. Ваннаха на копирайт и пиратство, высказанной статье "Возвращение к баранам", опубликованной в журнале Компьютерра 15 июня 2007 года.
После прочтения статьи на первый взгляд действительно кажется, что пираты помогли сохранить произведение исскуства для потомков.
Но если посмотреть на это критически, то мы увидим совсем другое.
Пр. Ванах пишет "Сочинитель писал для конкретной труппы", из этой фразы следует, что сочинитель, боясь не заработать на своём произведении, всячески препятствовал распространению письменных копий оригинала, делая их доступными только для театральных трупп, заплативших ему за пьесу.
Как на самом деле это произведение выглядело, сейчас никто не знает.
Может быть в нём давались ответы на главные вопросы современности?
-- Быть или не быть?
-- Где ты Йорик?
-- Тварь я дрожащая или право имею?
-- Что делать?
-- Кто убил Кеннеди?
-- Есть ли душа у Путина?
Но только дважды сокращённая и дважды переработанная версия поэмы сохранилась до наших дней.
Вначале труппа адаптировала пьесу для своего выступления, удалив всё, что ей показалось лишним.
Затем, анонимный пират, делавший запись живого выступления, что-то не успел записать, а потом не смог правильно вспомнить, что-то счёл несущественным (кто такой Путин? да ну его).
А произведения Шекспира, пользовавшиеся всеми преимуществами копирайта, дошли до современности в целости и сохранности, то же самое может быть сказано и о произведениях других британских писателей того времени.
То есть копирайт помогает сохранять произведения исскуства, и что вы
на это скажете?
== Эсперанто: Англосаксы наносят ответный удар ==
Эсперанто достаточно быстро получил широкое распространение в среде образованных людей Европы, у эсперантистов появилась уверенность в том, что именно эсперанто станет всемирным вспомогательным языком. Эта уверенность окрепла примерно сто лет назад -- в первом десятилетии 20 века, но до сих пор так и не реализовалась.
С моей точки зрения, главной причиной такого развития событий являются победы (не сколько военные, сколько геополитические) англоговорящих стран в первой и второй мировых войнах и огромные колониальные владения Британии, а также значительное количество независимых или слабо зависимых англоговорящих стран -- Великобритания, США, Новая Зеландия, Австралия, Канада.
Разгром Германии в ходе Второй Мировой Войны, целенаправленное уничтожение союзниками германской промышленности и последующее разделение страны привело к значительному ослаблению политического, экономического и культурного влияния Германии на несколько десятилетий и положили конец надеждам Германии на то, что международным языком станет немецкий язык.
А учитывая факт того, что после ВМВ экономики англоговорящих стран оказались практически нетронутыми, значительный рост экономического и политического влияния англоговорящих стран видятся абсолютно естественным и закономерным, тогда как европейские страны, основательно разрушенные в ходе ВМВ, потратили одно-два десятилетия только на восстановление своих экономик.
Это сделало английский язык языком мировой торговли.
Практически все крупные международные организации, появившиеся после ВМВ и частично из-за ВМВ, стали использовать английский язык в качестве официального языка (ООН, Евросоюз, ...).
Так английский стал языком мировой политики.
После ВМВ многие университеты континентальной Европы стали недоступными для иностранных учащихся -- одни учебные заведения были разрушены, другие оказались за железным занавесом, что дало огромную фору университетам в англоговорящих странах, как в проведении научных исследований, так и в привлечении заграничных студентов и преподавателей.
Особенно сильно это проявилось в сфере компьютерных технологий. Именно США стал мировым лидером в разработке и внедрении ЭВМ, а затем и персональных компьютеров, навязав всему миру английский язык в качестве языка компьютерных технологий -- все широко распространнёные языки программирования до сих пор используют английские слова в качестве своей основы.
Так английский стал языком науки и техники.
Европейское кино и музыка долго не могли оправиться после ВМВ, в то время как Голливуд набирал обороты с каждым годом. Несмотря на то, что европейские студии со временем оправились и начали на равных конкурировать с Голливудом, они сами отказавшись от возможности влиять на массового зрителя. Произошло это из-за стремительной деградации европейского кино, когда европейские студии начали выпускать скучную и мутную жижу псевдо-интеллектуального кино (Феллини, Альмодовар, Тарковский), вместо здоровых и приятных фильмов, интересных широкому кругу зрителей.
Помимо описанных выше причин, на популярность английского языка повлияли процессы происходящие внутри самого языка. Так изменение употребления английского языка шло по пути, обозначенным Herbert Spencer в его эссе "the Philosophy of Style", в котором автор утверждает, что лучшим стилем изложения материала является стиль, требующий от воспринимающего (слушателя или читателя) наименьших затрат умственных усилий на восприятие материала. Датский лингвист Otto Jespersen в своём эссе "Fremskridt i sproget" (1891) уточняет, что лучшим стилем является такой стиль изложения, который требует минимальных затрат, не только со стороны воспринимающего, но и со стороны выступающего (писателя, оратора). Упрощение языка в литературе, кино, музыки, а также новаторские подходы в сфере преподавания языка сделали его ещё доступнее для изучающих.
Большую роль в популяризации английского сыграла и англоязычная литература -- Льюис Кэррел, Дж. Р. Р. Толкиен, Агата Кристи, Стивен Кинг, Джоан Роулинг и десятки других англоязычных авторов, добившихся мировой популярности в различных жанрах, постоянно поддерживают интерес к английскому языку у читающих людей.
Так английский стал языком массовой культуры.
эсперанто, в свою очередь, был наиболее популярным именно в континентальной Европе -- Германии, Царской России, восточной и центральной Европе. В Фашисткой Германии и Сталинской России эсперантистов подвергались физическому уничтожению, восточная Европа в ходе двух мировых войн и с продвижением соц. лагеря на запад утратила своё политическое влияние, хотя в таких соц. странах как Польша, Чехия, Латвия и т.д. репрессии против эсперантистов не носили столь массового и жёсткого характера как в Советской России, Украине или Белорусии, движение эсперанто встречало значительное сопротивление со стороны властей.
Культура эсперанто была в значительно меньшей степени ориентирована на массового читателя. Эсперанская литература больше тяготеет к публицистике, научным изданиям, философии или серьёзным литературным произведениям, а не к "бульварному чтиву", то есть именно тем вещам, которые не интересны массовому читателю, поэтому у такого читателя не было большого интереса изучать эсперанто.
Все эти факторы привели к тому, что именно английский язык стал мировым языком, хотя, несмотря на все недостатки, присущие эсперанто, именно последний в большей степени подходил на эту роль, в силу своей большей политической нейтральности, а также, более регулярной и простой грамматики.
Эсперанто достаточно быстро получил широкое распространение в среде образованных людей Европы, у эсперантистов появилась уверенность в том, что именно эсперанто станет всемирным вспомогательным языком. Эта уверенность окрепла примерно сто лет назад -- в первом десятилетии 20 века, но до сих пор так и не реализовалась.
С моей точки зрения, главной причиной такого развития событий являются победы (не сколько военные, сколько геополитические) англоговорящих стран в первой и второй мировых войнах и огромные колониальные владения Британии, а также значительное количество независимых или слабо зависимых англоговорящих стран -- Великобритания, США, Новая Зеландия, Австралия, Канада.
Разгром Германии в ходе Второй Мировой Войны, целенаправленное уничтожение союзниками германской промышленности и последующее разделение страны привело к значительному ослаблению политического, экономического и культурного влияния Германии на несколько десятилетий и положили конец надеждам Германии на то, что международным языком станет немецкий язык.
А учитывая факт того, что после ВМВ экономики англоговорящих стран оказались практически нетронутыми, значительный рост экономического и политического влияния англоговорящих стран видятся абсолютно естественным и закономерным, тогда как европейские страны, основательно разрушенные в ходе ВМВ, потратили одно-два десятилетия только на восстановление своих экономик.
Это сделало английский язык языком мировой торговли.
Практически все крупные международные организации, появившиеся после ВМВ и частично из-за ВМВ, стали использовать английский язык в качестве официального языка (ООН, Евросоюз, ...).
Так английский стал языком мировой политики.
После ВМВ многие университеты континентальной Европы стали недоступными для иностранных учащихся -- одни учебные заведения были разрушены, другие оказались за железным занавесом, что дало огромную фору университетам в англоговорящих странах, как в проведении научных исследований, так и в привлечении заграничных студентов и преподавателей.
Особенно сильно это проявилось в сфере компьютерных технологий. Именно США стал мировым лидером в разработке и внедрении ЭВМ, а затем и персональных компьютеров, навязав всему миру английский язык в качестве языка компьютерных технологий -- все широко распространнёные языки программирования до сих пор используют английские слова в качестве своей основы.
Так английский стал языком науки и техники.
Европейское кино и музыка долго не могли оправиться после ВМВ, в то время как Голливуд набирал обороты с каждым годом. Несмотря на то, что европейские студии со временем оправились и начали на равных конкурировать с Голливудом, они сами отказавшись от возможности влиять на массового зрителя. Произошло это из-за стремительной деградации европейского кино, когда европейские студии начали выпускать скучную и мутную жижу псевдо-интеллектуального кино (Феллини, Альмодовар, Тарковский), вместо здоровых и приятных фильмов, интересных широкому кругу зрителей.
Помимо описанных выше причин, на популярность английского языка повлияли процессы происходящие внутри самого языка. Так изменение употребления английского языка шло по пути, обозначенным Herbert Spencer в его эссе "the Philosophy of Style", в котором автор утверждает, что лучшим стилем изложения материала является стиль, требующий от воспринимающего (слушателя или читателя) наименьших затрат умственных усилий на восприятие материала. Датский лингвист Otto Jespersen в своём эссе "Fremskridt i sproget" (1891) уточняет, что лучшим стилем является такой стиль изложения, который требует минимальных затрат, не только со стороны воспринимающего, но и со стороны выступающего (писателя, оратора). Упрощение языка в литературе, кино, музыки, а также новаторские подходы в сфере преподавания языка сделали его ещё доступнее для изучающих.
Большую роль в популяризации английского сыграла и англоязычная литература -- Льюис Кэррел, Дж. Р. Р. Толкиен, Агата Кристи, Стивен Кинг, Джоан Роулинг и десятки других англоязычных авторов, добившихся мировой популярности в различных жанрах, постоянно поддерживают интерес к английскому языку у читающих людей.
Так английский стал языком массовой культуры.
эсперанто, в свою очередь, был наиболее популярным именно в континентальной Европе -- Германии, Царской России, восточной и центральной Европе. В Фашисткой Германии и Сталинской России эсперантистов подвергались физическому уничтожению, восточная Европа в ходе двух мировых войн и с продвижением соц. лагеря на запад утратила своё политическое влияние, хотя в таких соц. странах как Польша, Чехия, Латвия и т.д. репрессии против эсперантистов не носили столь массового и жёсткого характера как в Советской России, Украине или Белорусии, движение эсперанто встречало значительное сопротивление со стороны властей.
Культура эсперанто была в значительно меньшей степени ориентирована на массового читателя. Эсперанская литература больше тяготеет к публицистике, научным изданиям, философии или серьёзным литературным произведениям, а не к "бульварному чтиву", то есть именно тем вещам, которые не интересны массовому читателю, поэтому у такого читателя не было большого интереса изучать эсперанто.
Все эти факторы привели к тому, что именно английский язык стал мировым языком, хотя, несмотря на все недостатки, присущие эсперанто, именно последний в большей степени подходил на эту роль, в силу своей большей политической нейтральности, а также, более регулярной и простой грамматики.
== Поколение Maxim ==
Несколько лет назад, ещё до того как стать интеллектуалом, я читал журнал Maxim.
Бросил читать этот замечательный глянцевый журнал только после того, как этот интересный журнал раздулся в два раза в обьёме за счёт рекламы.
Я понимаю, что множеству вполне нормальных мужчин интересно рассматривать рекламу парфюма, бритв, машин, а также стильных молодцов-моделей, рекламирующих всё это добро, я к этой категории читателей, к сожалению для журнала, не отношусь.
Но за несколько месяцев до этого прискорбного события, подтолкнувшего меня на путь западного интеллектуализма и интер-лингвистики (Esperanto и так далее), в Maxim появилась статья, изменившая всю современную российскую публицистику.
В этой статье рассказывалось о том, как прокачать мозг, а в качестве иллюстраций использовались фотографии мини-фиг.
Эта статья произвела на меня большое впечатление, чего, к сожалению, не скажешь о моём мозге.
В качестве одного из упражнений, призванных стимулировать мозг читателя, предлагалось придумывать интересные и забавные подписи к картинкам, читая современную российскую прессу, я постоянно ловлю себя на мысли, что люди, придумывавшие заголовки к статьям, тоже читали эту статью, и что эта статья оказала на них значительное влияние, чего не скажешь о их мозге.
Посудите сами:
-- Русский Newsweek
---- 225 -- Газа до отказа
------ Война без победы
------ Демисезонная кампания
------ Сосед играет на трубе
------ Противогаза
------ Реввоентибет (а вы знаете, что до захвата Китаем Тибета, в последнем существовало рабство, а плохие китайцы его отменили?)
------ Спасите наши куши
------ Нелишняя формальность
------ Обыкновенный расизм
------ Неизменная жестокость
------ Против дыма нет приёма
------ Вместе весело писать
------ Иствудские ведьмы
------ Наливай, Полицай
---- 226 -- Рублепад
------ Завод кончился
------ Как низко он пал
------ Рычание ягнят
------ Дитя без газа
------ Непозвалительная вольность
------ Миссия исправима (интересно, есть ли хотя бы один журнал не поизголявшийся над названием фильма с саентологом в главной роли?)
------ Сватотатство
------ Гетто на белом свете
------ Железная этика
------ База сданных
------ "Титаник" сорок лет спустя
-- Русский репортёр:
---- 073
------ О долгах и шелках
------ Цвет президентов
------ Уголовный комикс
------ Коми-вояжёры
------ Чёрно-белый негр (и это тоже про Обаму)
------ Пояса неверности. Танцующее время планеты земля
------ Эстрада со вкусом
------ Трудно быть лохом
---- 076
------ Липовый цвет нации
------ Бюджетный террор
------ Тайский пассаж
------ Формула гламура (а вот об этом как-нибудь напишу)
------ Городские электроники
------ Ближе к пиву
------ 077
------ Ушли в долги
------ Лох против громилы с битой
------ Усечение присяжных
------ Профсоюз "Андрей Николаевич"
------ Полуголое царство или ... ... что могут короли
------ фоти-фоти
------ Львиная доля
------ Свази-демократия
------ Бабий бум
------ Вынос мозга
------ Разница потенциалов
------ и в этой статье полно изображений голых сисек несовершеннолетних негритянок -- как это согласуется с УК?
------ Патриарший крест (статья про скончавшегося патриарха идёт сразу после голых сисек несовершеннолетний негритянок -- мне как не воцерквлённому протестанту не очень смешно -- этот человек столько сделал для того, чтобы угробить Русскую Православную Церковь, хотя может православным и понравилось такое соседство?)
------ Битва за перхоть
------ Где приятно платить налоги
------ Нанотехнологии ударят по зубам
------ Порывалы
------ Чемпион на колёсах
------ "Сатурн" поглотил "Химки" (вроде всё нормально, но всё равно звучит по идиотски)
------ За грибом с топором
------ Алатырь (это ещё что, в Новосибирской области есть следующие населённые пункты -- Колбаса, Секты, Колыбелька, Резино, Комарьё, Кирза)
И вам ещё повезло, что я выбросил все старые номера Компьютерры и перестал покупать новые, после очередного хамства со стороны Голубицкого и рекламного отдела.
a также названия статей в списке литературы к этой статье:
-- Teaching world Englishes to native speakers of English in the USA
-- From Chaos to the Smallest Common Denominator: Topic Management in English Lingua Franca Communication
-- The Corpus of English as a Lingua Franca in International Settings
-- English as a Lingua Franca for Europe
ну и так далее.
Rdfs
Несколько лет назад, ещё до того как стать интеллектуалом, я читал журнал Maxim.
Бросил читать этот замечательный глянцевый журнал только после того, как этот интересный журнал раздулся в два раза в обьёме за счёт рекламы.
Я понимаю, что множеству вполне нормальных мужчин интересно рассматривать рекламу парфюма, бритв, машин, а также стильных молодцов-моделей, рекламирующих всё это добро, я к этой категории читателей, к сожалению для журнала, не отношусь.
Но за несколько месяцев до этого прискорбного события, подтолкнувшего меня на путь западного интеллектуализма и интер-лингвистики (Esperanto и так далее), в Maxim появилась статья, изменившая всю современную российскую публицистику.
В этой статье рассказывалось о том, как прокачать мозг, а в качестве иллюстраций использовались фотографии мини-фиг.
Эта статья произвела на меня большое впечатление, чего, к сожалению, не скажешь о моём мозге.
В качестве одного из упражнений, призванных стимулировать мозг читателя, предлагалось придумывать интересные и забавные подписи к картинкам, читая современную российскую прессу, я постоянно ловлю себя на мысли, что люди, придумывавшие заголовки к статьям, тоже читали эту статью, и что эта статья оказала на них значительное влияние, чего не скажешь о их мозге.
Посудите сами:
-- Русский Newsweek
---- 225 -- Газа до отказа
------ Война без победы
------ Демисезонная кампания
------ Сосед играет на трубе
------ Противогаза
------ Реввоентибет (а вы знаете, что до захвата Китаем Тибета, в последнем существовало рабство, а плохие китайцы его отменили?)
------ Спасите наши куши
------ Нелишняя формальность
------ Обыкновенный расизм
------ Неизменная жестокость
------ Против дыма нет приёма
------ Вместе весело писать
------ Иствудские ведьмы
------ Наливай, Полицай
---- 226 -- Рублепад
------ Завод кончился
------ Как низко он пал
------ Рычание ягнят
------ Дитя без газа
------ Непозвалительная вольность
------ Миссия исправима (интересно, есть ли хотя бы один журнал не поизголявшийся над названием фильма с саентологом в главной роли?)
------ Сватотатство
------ Гетто на белом свете
------ Железная этика
------ База сданных
------ "Титаник" сорок лет спустя
-- Русский репортёр:
---- 073
------ О долгах и шелках
------ Цвет президентов
------ Уголовный комикс
------ Коми-вояжёры
------ Чёрно-белый негр (и это тоже про Обаму)
------ Пояса неверности. Танцующее время планеты земля
------ Эстрада со вкусом
------ Трудно быть лохом
---- 076
------ Липовый цвет нации
------ Бюджетный террор
------ Тайский пассаж
------ Формула гламура (а вот об этом как-нибудь напишу)
------ Городские электроники
------ Ближе к пиву
------ 077
------ Ушли в долги
------ Лох против громилы с битой
------ Усечение присяжных
------ Профсоюз "Андрей Николаевич"
------ Полуголое царство или ... ... что могут короли
------ фоти-фоти
------ Львиная доля
------ Свази-демократия
------ Бабий бум
------ Вынос мозга
------ Разница потенциалов
------ и в этой статье полно изображений голых сисек несовершеннолетних негритянок -- как это согласуется с УК?
------ Патриарший крест (статья про скончавшегося патриарха идёт сразу после голых сисек несовершеннолетний негритянок -- мне как не воцерквлённому протестанту не очень смешно -- этот человек столько сделал для того, чтобы угробить Русскую Православную Церковь, хотя может православным и понравилось такое соседство?)
------ Битва за перхоть
------ Где приятно платить налоги
------ Нанотехнологии ударят по зубам
------ Порывалы
------ Чемпион на колёсах
------ "Сатурн" поглотил "Химки" (вроде всё нормально, но всё равно звучит по идиотски)
------ За грибом с топором
------ Алатырь (это ещё что, в Новосибирской области есть следующие населённые пункты -- Колбаса, Секты, Колыбелька, Резино, Комарьё, Кирза)
И вам ещё повезло, что я выбросил все старые номера Компьютерры и перестал покупать новые, после очередного хамства со стороны Голубицкого и рекламного отдела.
На размышление на эту тему меня подтолкнул заголовок статьи, опубликованной в журнале
-- Journalr for EuroLinguistiX2 (2005)
a также названия статей в списке литературы к этой статье:
-- Teaching world Englishes to native speakers of English in the USA
-- From Chaos to the Smallest Common Denominator: Topic Management in English Lingua Franca Communication
-- The Corpus of English as a Lingua Franca in International Settings
-- English as a Lingua Franca for Europe
ну и так далее.
Не удивительно, что английский является мировым языком, а русская литература существует только благодаря тому, что переводчики с английского отказываются переводить за такие смешные деньги, которые им предлагают издательства -- приходится печатать отечественное.
К сожалению, эти люди не читали книжку, в которой советуется браковать первый вариант шутки, так как именно такой вариант приходит в голову сразу нескольким десяткам человек.
Rdfs
- Mood:
ditzy
==Колониальное начало эсперанто==
Язык эсперанто появился в конце 19 века и стал сенсацией.
Эсперанто достаточно быстро приобрёл массовую популярность, полностью вытеснив своего предшественника -- Волапука.
На данный момент на эсперанто написано больше 20 тысяч книг, выходят десятки газет и журналов, проводятся международные конгрессы и другие мероприятия, эсперанто в той или иной степени владеют от 50 тысяч до двух миллионов человек во всём мире, эсперанто де-факто является наиболее успешным проектом искусственного международного вспомогательного языка, но при этом движение эсперанто до сих пор не добилось своей главной цели -- признания эсперанто в качестве официально признанного международного языка.
Хотелось бы понять почему эсперанто так быстро стал популярным, что вызвало столь пристальный интерес к этому языку.
По своей сути, эсперанто является "усреднённым романским языком", т.е. значительная часть грамматики и лексикона эсперанто присуща большей части романских языков (французский, португальский, испанский, итальянский), что делает эсперанто простым в освоении для людей знающих хотя бы один романский язык, а так же для образованных носителей английского, немецкого и славянских языков.
Девятнадцатый век был временем колоний.
Большинство крупных европейских государств владело тем или иным количеством заморских территорий и пытались обучить местное население языку метрополии.
Так что заявление эсперантистов о том, что большинство образованных людей в во всём мире знакомы со важнейшей частью лексикона эсперанто было абсолютной истиной в конце 19 века (особенно если не считать образованными людей не получивших классического европейского образования).
Второй причиной быстрого роста популярности эсперанто стало то, что в конце девятнадцатого века ни в мире, ни даже в Европе не было общепризнанного международного языка.
А за пальму первенства боролись сразу три языка -- немецкий, французский и английский.
Германия конца девятнадцатого века была европейской сверх-державой, но не имела колоний.
Именно отсутствие монопольных рынков сбыта в колониях заставляло Германию быть лидером в науке (немецкий язык был основным языком науки), развивать промышленность для того чтобы производить продукцию превосходящую продукцию конкурентов, и экспортировать эту продукцию в как можно большее количество стран.
Всё это делало немецкий язык крайне важным как в научной сфере, так и в коммерции.
Франция и Англия, также претендовавшие на главенствующую роль в Европе старалась продвигать свои языки в Европе и одновременно распространяли их в своих многочисленных колониях.
Латынь в это время только начинала вновь отвоёвывать себе место в образовательных учереждениях.
И эсперанто появился именно в такое время -- время когда не было общепризнанного языка в важнейших областях человеческого общения.
Простота и логичность грамматики, относительная лёгкость освоения лексикона для европейцев и отсутствие явных серьёзных недостатков сделало эсперанто реальным кандидатом на роль международного вспомогательного языка.
Уверенность в том, что эсперанто может стать мировым языком придала огромный заряд движению эсперанто, что позволило ему пережить колониальную эпоху, несколько расколов эсперантисткого движения, две мировые войны, физическое истребление эсперантистов в фашисткой Германии и комунистической России, приход английского языка и возрождение латыни. А в будущем позволит ему ещё долго удерживать завоёванные позиции в области искуственных языков.
Как показала практика ни один из "улучшенных" или "исправленных" вариантов эсперанто не смог превзойти эсперанто по популярности и скорее всего в ближайшее время ни один представитель "усреднённых романских языков" (Ido, Interlingua) не сможет этого сделать, хотя и сам эсперанто не сможет принципиально изменить сложившуюся ситуацию в свою пользу.
Язык эсперанто появился в конце 19 века и стал сенсацией.
Эсперанто достаточно быстро приобрёл массовую популярность, полностью вытеснив своего предшественника -- Волапука.
На данный момент на эсперанто написано больше 20 тысяч книг, выходят десятки газет и журналов, проводятся международные конгрессы и другие мероприятия, эсперанто в той или иной степени владеют от 50 тысяч до двух миллионов человек во всём мире, эсперанто де-факто является наиболее успешным проектом искусственного международного вспомогательного языка, но при этом движение эсперанто до сих пор не добилось своей главной цели -- признания эсперанто в качестве официально признанного международного языка.
Хотелось бы понять почему эсперанто так быстро стал популярным, что вызвало столь пристальный интерес к этому языку.
По своей сути, эсперанто является "усреднённым романским языком", т.е. значительная часть грамматики и лексикона эсперанто присуща большей части романских языков (французский, португальский, испанский, итальянский), что делает эсперанто простым в освоении для людей знающих хотя бы один романский язык, а так же для образованных носителей английского, немецкого и славянских языков.
Девятнадцатый век был временем колоний.
Большинство крупных европейских государств владело тем или иным количеством заморских территорий и пытались обучить местное население языку метрополии.
Так что заявление эсперантистов о том, что большинство образованных людей в во всём мире знакомы со важнейшей частью лексикона эсперанто было абсолютной истиной в конце 19 века (особенно если не считать образованными людей не получивших классического европейского образования).
Второй причиной быстрого роста популярности эсперанто стало то, что в конце девятнадцатого века ни в мире, ни даже в Европе не было общепризнанного международного языка.
А за пальму первенства боролись сразу три языка -- немецкий, французский и английский.
Германия конца девятнадцатого века была европейской сверх-державой, но не имела колоний.
Именно отсутствие монопольных рынков сбыта в колониях заставляло Германию быть лидером в науке (немецкий язык был основным языком науки), развивать промышленность для того чтобы производить продукцию превосходящую продукцию конкурентов, и экспортировать эту продукцию в как можно большее количество стран.
Всё это делало немецкий язык крайне важным как в научной сфере, так и в коммерции.
Франция и Англия, также претендовавшие на главенствующую роль в Европе старалась продвигать свои языки в Европе и одновременно распространяли их в своих многочисленных колониях.
Латынь в это время только начинала вновь отвоёвывать себе место в образовательных учереждениях.
И эсперанто появился именно в такое время -- время когда не было общепризнанного языка в важнейших областях человеческого общения.
Простота и логичность грамматики, относительная лёгкость освоения лексикона для европейцев и отсутствие явных серьёзных недостатков сделало эсперанто реальным кандидатом на роль международного вспомогательного языка.
Уверенность в том, что эсперанто может стать мировым языком придала огромный заряд движению эсперанто, что позволило ему пережить колониальную эпоху, несколько расколов эсперантисткого движения, две мировые войны, физическое истребление эсперантистов в фашисткой Германии и комунистической России, приход английского языка и возрождение латыни. А в будущем позволит ему ещё долго удерживать завоёванные позиции в области искуственных языков.
Как показала практика ни один из "улучшенных" или "исправленных" вариантов эсперанто не смог превзойти эсперанто по популярности и скорее всего в ближайшее время ни один представитель "усреднённых романских языков" (Ido, Interlingua) не сможет этого сделать, хотя и сам эсперанто не сможет принципиально изменить сложившуюся ситуацию в свою пользу.
==Критика эсперанто==
В этой статье я намереваюсь рассмотреть основные особенности международного вспомогательного языка эсперанто.
Главным критерием при оценке эсперанто будет являться то, способствует ли, та или иная особенность языка достижению главной цели эсперанто -- стать всемирным вспомогательным языком.
===Плюсы===
Огромным достоинством эсперанто является то, что существительные, прилагательные, производные наречия и глаголы имеют регулярные окончания -- -o, -a, -e, -i (-is, -as, -os, -us, -u) соответственно, что делает изучения языка намного проще (см. на пример Novial -- в этом языке глаголы могу оканчиваться на четыре разные буквы, в зависимости от частоты их употребления, что вынуждает изучающего тратить усилия на изучение не значимой информации).
Система образования времён в эсперанто вызывает восхищение и в значительной степени превосходит свои аналоги во многих языках, как в естественных, так и в искуственных -- особенно в классическом английском, испанском языках и в Novial.
Для того чтобы образовать любое время в любом залоге, в любом числе, для любого рода в эсперанто необходимо использовать одно-два слова и/или соответствующее окончание.
Для того чтобы убедиться в правильности подхода эсперанто к решению этой задачи, достаточно посмотреть на таблицы, представленные в этой статье [[http://en.wikipedia.org/wiki/Esperant o_and_Novial_compared]] в разделе Verbal Systems.
Однако, следует отметить, что за последнии полвека использование перфекта в английском в значительной степени сократилось.
===Минусы===
На мой взгляд, главными недостатками эсперанто, как не родного языка для всех его носителей является свободный порядок слов в предложении, обязательное согласование прилагательных и сходных частей речи с определяемым словом, а также использование винительного падежа.
Свободный порядок слов лишь в незначительной степени способствует увеличению выразительности языка (вся англоязычная и франкоязычная литература, да и классики русской литературы прекрасно обходились строгим порядком слов в предложении), во всех случаях когда используется изменённый порядок слов в предложении можно прекрасно обойтись и без этого (см. на пример книги Ф.М.Достоевского).
Черезмерное использование свободного порядка слов приводит к тому, что читающий должен тратить умственные усилия не только на то чтобы вспомнить, что значит то или иное слово, но и на то, связать их воедино.
Обязательное согласование прилагательных в значительной степени усложняет чтение, так как приходится анализировать не только окончания существительных, но и прилагательных.
Это приходится делать даже тогда, когда прилагательные стоят перед определяемым словом.
Тоже самое можно сказать и об использовании винительного падежа для указания прямого дополнения.
Если бы в эсперанто был строгий порядок слов в предложении, то необходимость использовать окончание -n отпала бы.
Строгий порядок слов позволил бы сделать эсперанто более легкочитаемыми, а так тексты на эсперанто захламлены не нужными окончаниями -j, -n и -jn, причём последнее окончание может доставить определённые трудности при произношении -- mi legis miajn novajn, utilajn kaj interesajn librojn.
==50/50==
Использование при формировании лексики эсперанто в основном на основе корней романского происхождения привело к двоякому результату.
С одной стороны, эсперанто очень легко изучается носителями романских языков (французский, португальский, испанский и т.д), но при этом даётся с большим трудом носителям германских и славянских языков, что привело к быстрому росту популярности эсперанто на Западе.
А с другой стороны, эсперанто является гораздо более сложным для не западных людей -- китайцев, японцев, арабов, малазийцев, индусов, не говорящих на английском, африканцев.
Конечно, простота, логичность и последовательность граматики эсперанто делает его более простым в изучении чем естественные европейские языки, при изучении которых, изучающий тратит значительную часть времени и усилий на освоение различного рода исключений.
Однако,грамматика эсперанто является романской по своей сути, что также даёт преимущество в освоении языка носителям романских языков, но при этом, некоторые не европейские языки грамматически проще чем эсперанто (китайский, арабский).
Иными словами, эсперанто является не очень простым языком для большей части населения Земли, но при этом даёт значительное преимущество представителям западной цивилизации.
Что в свою очередь привело к тому, что эсперанто не обладает культурной нейтральностью и *не может* претендовать на роль языка для всемирного общений.
Использование суффиксов для формирования лексики эсперанто также является неоднозначным.
С одной стороны это облегчает изучении эсперанто для людей не владеющих романскими языками, так как многие слова в романских языках родом из латыни, а в этом языке слова могли быть образованны от различных вариантов основы слова (от трёх или четырёх), а также непоследовательное употребление суффиксов, что создаёт дополнительную нагрузку на изучающих.
Использование корней из естественных языков и суффиксов эсперанто привело к тому, что эсперанто стал немного проще для тех, для кого романские языки не являются родными, но усложнил его для носителей подобных языков, так как им придётся переучивать многие слова.
Однако, принимая во внимание тот факт, что эсперанто не может претендовать на роль всемирного вспомогательного языка, эта особенность выглядит скорее недостатком, а не преимуществом, что, в определённой степени, мешает эсперанто стать общеевропейским языком.
В этом отношении, подход к заимствованию слов в языке Ido выглядит более логичным.
===Сумма===
Подводя итог рассмотрения плюсов и минусов эсперанто можно сказать, что плюсы в данном случае всё-таки перевешивают -- эсперанто является достаточно логичным, последовательным плановым языком из семейства "усреднённых романских языков", достаточно лёгким в изучении для русскоговорящих людей.
Эсперанто способен стать, если и не вспомогательным языком для всемирного общения, то, по крайней мере, общим вспомогательным языком Западной цивилизации, хотя здесь эсперанто придётся на равных конкурировать с Ido, Novial и Interlingua.
В этой статье я намереваюсь рассмотреть основные особенности международного вспомогательного языка эсперанто.
Главным критерием при оценке эсперанто будет являться то, способствует ли, та или иная особенность языка достижению главной цели эсперанто -- стать всемирным вспомогательным языком.
===Плюсы===
Огромным достоинством эсперанто является то, что существительные, прилагательные, производные наречия и глаголы имеют регулярные окончания -- -o, -a, -e, -i (-is, -as, -os, -us, -u) соответственно, что делает изучения языка намного проще (см. на пример Novial -- в этом языке глаголы могу оканчиваться на четыре разные буквы, в зависимости от частоты их употребления, что вынуждает изучающего тратить усилия на изучение не значимой информации).
Система образования времён в эсперанто вызывает восхищение и в значительной степени превосходит свои аналоги во многих языках, как в естественных, так и в искуственных -- особенно в классическом английском, испанском языках и в Novial.
Для того чтобы образовать любое время в любом залоге, в любом числе, для любого рода в эсперанто необходимо использовать одно-два слова и/или соответствующее окончание.
Для того чтобы убедиться в правильности подхода эсперанто к решению этой задачи, достаточно посмотреть на таблицы, представленные в этой статье [[http://en.wikipedia.org/wiki/Esperant
Однако, следует отметить, что за последнии полвека использование перфекта в английском в значительной степени сократилось.
===Минусы===
На мой взгляд, главными недостатками эсперанто, как не родного языка для всех его носителей является свободный порядок слов в предложении, обязательное согласование прилагательных и сходных частей речи с определяемым словом, а также использование винительного падежа.
Свободный порядок слов лишь в незначительной степени способствует увеличению выразительности языка (вся англоязычная и франкоязычная литература, да и классики русской литературы прекрасно обходились строгим порядком слов в предложении), во всех случаях когда используется изменённый порядок слов в предложении можно прекрасно обойтись и без этого (см. на пример книги Ф.М.Достоевского).
Черезмерное использование свободного порядка слов приводит к тому, что читающий должен тратить умственные усилия не только на то чтобы вспомнить, что значит то или иное слово, но и на то, связать их воедино.
Обязательное согласование прилагательных в значительной степени усложняет чтение, так как приходится анализировать не только окончания существительных, но и прилагательных.
Это приходится делать даже тогда, когда прилагательные стоят перед определяемым словом.
Тоже самое можно сказать и об использовании винительного падежа для указания прямого дополнения.
Если бы в эсперанто был строгий порядок слов в предложении, то необходимость использовать окончание -n отпала бы.
Строгий порядок слов позволил бы сделать эсперанто более легкочитаемыми, а так тексты на эсперанто захламлены не нужными окончаниями -j, -n и -jn, причём последнее окончание может доставить определённые трудности при произношении -- mi legis miajn novajn, utilajn kaj interesajn librojn.
==50/50==
Использование при формировании лексики эсперанто в основном на основе корней романского происхождения привело к двоякому результату.
С одной стороны, эсперанто очень легко изучается носителями романских языков (французский, португальский, испанский и т.д), но при этом даётся с большим трудом носителям германских и славянских языков, что привело к быстрому росту популярности эсперанто на Западе.
А с другой стороны, эсперанто является гораздо более сложным для не западных людей -- китайцев, японцев, арабов, малазийцев, индусов, не говорящих на английском, африканцев.
Конечно, простота, логичность и последовательность граматики эсперанто делает его более простым в изучении чем естественные европейские языки, при изучении которых, изучающий тратит значительную часть времени и усилий на освоение различного рода исключений.
Однако,грамматика эсперанто является романской по своей сути, что также даёт преимущество в освоении языка носителям романских языков, но при этом, некоторые не европейские языки грамматически проще чем эсперанто (китайский, арабский).
Иными словами, эсперанто является не очень простым языком для большей части населения Земли, но при этом даёт значительное преимущество представителям западной цивилизации.
Что в свою очередь привело к тому, что эсперанто не обладает культурной нейтральностью и *не может* претендовать на роль языка для всемирного общений.
Использование суффиксов для формирования лексики эсперанто также является неоднозначным.
С одной стороны это облегчает изучении эсперанто для людей не владеющих романскими языками, так как многие слова в романских языках родом из латыни, а в этом языке слова могли быть образованны от различных вариантов основы слова (от трёх или четырёх), а также непоследовательное употребление суффиксов, что создаёт дополнительную нагрузку на изучающих.
Использование корней из естественных языков и суффиксов эсперанто привело к тому, что эсперанто стал немного проще для тех, для кого романские языки не являются родными, но усложнил его для носителей подобных языков, так как им придётся переучивать многие слова.
Однако, принимая во внимание тот факт, что эсперанто не может претендовать на роль всемирного вспомогательного языка, эта особенность выглядит скорее недостатком, а не преимуществом, что, в определённой степени, мешает эсперанто стать общеевропейским языком.
В этом отношении, подход к заимствованию слов в языке Ido выглядит более логичным.
===Сумма===
Подводя итог рассмотрения плюсов и минусов эсперанто можно сказать, что плюсы в данном случае всё-таки перевешивают -- эсперанто является достаточно логичным, последовательным плановым языком из семейства "усреднённых романских языков", достаточно лёгким в изучении для русскоговорящих людей.
Эсперанто способен стать, если и не вспомогательным языком для всемирного общения, то, по крайней мере, общим вспомогательным языком Западной цивилизации, хотя здесь эсперанто придётся на равных конкурировать с Ido, Novial и Interlingua.
-- с точки зрения христианства -- у людей всегда есть шанс
-- с точки зрения оптимизма -- у людей всегда есть шанс
-- с точки зрения неоязычества -- человеку даётся только один шанс -- если профукал, то это уже твои проблемы (Перумов, "земля без радости")
-- с точки зрения пессимизма -- у людей, конечно, есть шанс, но он им не поможет
-- с точки зрения оптимизма -- у людей всегда есть шанс
-- с точки зрения неоязычества -- человеку даётся только один шанс -- если профукал, то это уже твои проблемы (Перумов, "земля без радости")
-- с точки зрения пессимизма -- у людей, конечно, есть шанс, но он им не поможет
Голуби бывают разные.
Одни радуют влюблённых, воркованием.
Вторые приносят морякам радостную весть в клюве.
Третьи скрашивают старость пенсионерам.
Четвёртые почту носят.
Но Голубицкий не такой!
Он голубь меткий -- хрен увернёшся!
Одни радуют влюблённых, воркованием.
Вторые приносят морякам радостную весть в клюве.
Третьи скрашивают старость пенсионерам.
Четвёртые почту носят.
Но Голубицкий не такой!
Он голубь меткий -- хрен увернёшся!
- Mood:nerdy
- Music:кофемолка
