Праклён Lisp

Original: http://winestockwebdesign.com/Essays/Lisp_Curse.html

Rudolf Winestock

Гэта эсэ яшчэ адна спроба прымірыць ўлада Lisp мова праграмавання з няздольнасцю Lisp супольнасці, каб прайграць іх загадзя А.І. зімовых дасягненняў. Без сумневу, Lisp быў уплывовым крыніцай ідэй нават у яго час адступлення. Той факт, плюс бляск розных архітэктур Lisp Machine, і ў цяперашні час Ліспе рэнесанс пасля больш чым дзесяці гадоў у пустыні, паказваюць, што Lisp партызаны павінны мець некаторыя падставы для іх самаздаволення. Тым не менш, яны не змаглі перавесці магутнасць Lisp ў рух з пераважнай імпульсу.

У гэтым эсэ я сцвярджаю, што выразная сіла Lisp з’яўляецца на самой справе прычынай яго адсутнасці імпульсу.

Сіла Lisp з’яўляецца яго уласным лютым ворагам.

Вось разумовы эксперымент, каб даказаць гэта: Вазьміце дзве моў праграмавання, ні адзін з якіх з’яўляюцца аб’ектна-арыентаванымі. Ваша місія, калі вы вырашыце прыняць гэта, каб зрабіць іх аб’ектна-арыентаваным, захоўваючы іх назад сумяшчальны з арыгінальнымі мовах, па модулю некаторых крайнія выпадкі. Ўстаноўка любой пары моў праграмавання ў гэтым ўяўным эксперыменце будзе паказаць, што гэта лягчэй з некаторых мовах, чым з іншымі. Гэта кропка разумовага эксперыменту. Вось просты прыклад: INTERCAL і Паскаль.

Цяпер зрабіць гэта разумовы эксперымент цікава: Уявіце сабе, дадаючы арыентацыю аб’екта ў C і Scheme моў праграмавання. Стварэнне Схема аб’ектна-арыентаванай з’яўляецца прызначэнне другакурснік хатняя. З іншага боку, дадаўшы, арыентацыю аб’екта на C патрабуе праграмавання адбіўныя Бьерн Страуструп.

Наступствы гэтага разыходжанні ў неабходнай таленту і намаганняў выклікаюць Праклён Lisp:

Lisp з’яўляецца настолькі магутным, што праблемы, якія тэхнічныя пытанні ў іншых мовах праграмавання сацыяльныя пытанні ў Lisp.

Разгледзім выпадак схеме, зноў. Так робіць Схема аб’ектна-арыентаванай так лёгка, многія Схема хакеры зрабілі. Больш канкрэтна, многія асобныя хакеры Схема зрабілі так. У 1990-х гадах, гэта прывяло да сапраўдную склада вопісу аб’ектна-арыентаваных пакетаў для мовы. Парадокс выбару, у адзіночку, гарантуецца, што ні адзін з іх не стаў бы стандартам. Цяпер, што некаторыя рэалізацыі Scheme ёсць свае ўласныя сродкі аб’ектна-арыентаванага, гэта не так ужо дрэнна. Тым не менш, той факт, што многія з гэтых пакетаў былі працы адзіночак прывяло да праблем, якія Олін Дрыготка пісаў пра ў дакументаванні Схема Shell, scsh.

Праграмы, напісаныя на асобных хакераў, як правіла, ідуць мадэлі драпін ан-сверб. Гэтыя праграмы будуць вырашыць праблему, што хакер, сам аказвае не абавязкова звароце звязаныя часткі праблемы, якая б зрабіць праграму больш карысным для іншых. Акрамя таго, праграма, безумоўна, працаваць на ўласным ўстаноўкі гэтага самотнага хакера, але не можа быць пераносным на іншыя рэалізацыі схемы або да той жа схеме рэалізацыі на іншых платформах. Дакументацыя можа быць не хапае. Будучы па сутнасці праект робіцца ў вольны час багатым хакера, праграма нясе адказнасць пакутаваць павінны рэальныя абавязкі ўрывацца на хакера. Як адзначыў Олін Дрыготка, гэта азначае, што гэтыя Чалавек-групы праекты, як правіла, каб вырашыць восемдзесят працэнтаў праблемы.

Эсэ д-р Марк Тарвер, Біпалярны Lisp праграміст, мае дакладнае апісанне гэтай з’явы. Ён піша пра такія самотны воўк Lisp хакераў і іх

… Няздольнасць завяршыць рэчы належным чынам. Фраза “выкідваць дызайн” абсалютна зрабіў для BBM, і ён прыходзіць з Lisp супольнасці. Lisp дазваляе проста кінуць рэчы так лёгка, і гэта лёгка прыняць гэта як належнае. Я бачыў гэта 10 гадоў таму, калі, гледзячы на ​​графічны інтэрфейс да майго Lisp. Няма праблем, не было 9 розных прапаноў. Бяда ў тым, што ні адзін з 9 былі належным чынам задакументаваныя і не было ніводнага памылка бясплатна. У асноўным кожны чалавек быў рэалізаваны сваё рашэнне, і яна працавала для яго так, каб было добра. Гэта стаўленне BBM; гэта працуе для мяне, і я яго разумею. Гэта таксама прадукт не мае патрэбы або жадаючы дапамагчы каму-небудзь яшчэ, каб зрабіць што-то.

Яшчэ раз разгледзім мова праграмавання C у гэтым ўяўным эксперыменце. З-за складанасці вырабу З аб’ектна-арыентаваны, толькі два сур’ёзных спробы праблемы ўнеслі якія-небудзь цягі: C ++ і Objective-C. Objective-C з’яўляецца самым папулярным на Macintosh, а правілы C ++ ўсюды. Гэта азначае, што для дадзенай платформы, пытанне якіх аб’ектна-арыентаванае пашырэнне C, каб выкарыстоўваць ужо адказалі канчаткова. Гэта азначае, што аб’ектна-арыентаваны сродкі для гэтых моў былі задакументаваныя, што інтэграваныя асяроддзя распрацоўкі дасведчаныя пра іх, што бібліятэкі кода сумяшчальныя з імі, і гэтак далей.

Эсэ д-р Марк Тарвер на біпалярных Lispers робіць кропку:

У цяперашні час у адрозненне ад C / C ++ падыход зусім іншай. Гэта так па-чартоўску цяжка зрабіць што-небудзь з дапамогай пінцэта і клею, што нічога істотнага вы робіце стане сапраўдным дасягненнем. Вы хочаце, каб дакументаваць яго. Таксама вы адказнасць патрэбна дапамога ў любы C праекта значных памераў; так што вы адказнасць, каб быць сацыяльна і працаваць з іншымі. Вы павінны, толькі, каб атрымаць недзе.

І ўсё, што, з пункту гледжання працадаўцы, з’яўляецца прывабным. Дзесяць чалавек, якія маюць зносіны, дакумент рэчы правільна і працуюць разам пераважней аднаго BBM ўзлому Lisp, які можа быць заменены толькі іншым BBM (калі вы можаце знайсці адзін) у ня малаверагодна выпадку, што ён будзе, у нейкі момант, спусціцца, не будучы rebootable.

Такім чынам, тыя, хто ўжо ведае, C не спытаць “Які аб’ект сістэмы я павінен вучыцца?” Замест гэтага, яны выкарыстоўваюць C ++ або Objective-C у залежнасці ад таго, што іх калегі выкарыстоўваюць, а затым перайсці на “Як я магу выкарыстоўваць аб’ектна-арыентаваны функцыя X?” Адказ: “GOOG яго, і вы знойдзеце.”

Рэальныя хакеры, вядома, ужо даўно вядома, што аб’ектна-арыентаванае праграмаванне не панацэя, што яго прыхільнікі сцвярджалі ,. Рэальныя хакеры перайшлі да больш складаным такіх паняццяў, як нязменных структур дадзеных, тыпу лагічнага вываду, лянівы, манады, стрэлкі, супастаўленне з узорам, на аснове абмежаванняў праграмавання, і гэтак далей. Рэальныя Хакеры таксама вядома, на некаторы час, што З і З ++, не з’яўляюцца падыходнымі для большасці праграм, якія не трэба рабіць адвольную бітавую дробязны. Тым не менш, праклён Lisp ўсё яшчэ трымае.

Некаторыя самаздаволеныя Lisp-палюбоўнікі агледзеў сёлетні ўраджай акадэмічных мовах (Haskell, OCaml, і гэтак далей) і знайшоў іх, жадаючы, кажучы, што любая функцыя з іх ёсць ці ўжо прысутнічае ў Lisp або могуць быць лёгка рэалізаваны – і палепшаныя – з Lisp макрасы. Яны, верагодна, маюць рацыю.

Жаль Lisp хакеры.

Д-р Марк Тарвер – у два разы двукоссях, перш, – піша дыялект Lisp называецца Ці. Гэта менш, чым дзесяць тысяч радкоў макрасаў, якія працуюць на вяршыні CLISP. Ён рэалізуе большасць унікальных асаблівасцяў Haskell і OCaml. У некаторых адносінах, Цы пераўзыходзіць іх. Напрыклад, тып лагічнага вываду рухавіка Ці з’яўляецца Цьюрынга. У свеце, дзе былі патрэбныя каманды таленавітых навукоўцаў, каб напісаць Haskell, адзін чалавек, доктар Тарвер напісаў Ці ўсе яго адзінокім.

Чытайце, што пункт, зноў жа, і экстрапаляваць.

Практыкаванне для чытача: Уявіце сабе, што моцная канкурэнцыя развіваецца паміж Haskell і Common Lisp. Што адбываецца далей?

Адказ: Праклён Lisp памірае кожны другі ці трэці сур’ёзны Lisp хакер будзе каціцца сваю рэалізацыю лянівы, функцыянальнай чысціні, стрэлкі, супастаўленне з узорам, тыпу лагічнага вываду, і астатніх .. Большасць з гэтых праектаў будзе самотны воўк аперацыі. Такім чынам, яны будуць мець восемдзесят працэнтаў функцый, якія большасць людзей маюць патрэбу (іншая восемдзесят працэнтаў у кожным выпадку). Яны будуць дрэнна дакументаваны. Яны не будуць пераноснасці паміж сістэмамі Lisp. Некаторыя праяўляюць вялікую абяцанне, перш чым адмовіцца, а праект суправаджалы сыходзіць плаціць па рахунках. Некалькі будзе біць па Haskell той ці іншай памернасці (зноў жа, адрозніваецца па адной у кожным выпадку), але іх прыняцце будзе абцяжарана полымя войнаў на comp.lang.lisp Usenet групы.

Эндшпіль: збор выпадковага старога часу Lisp хакера макрасаў будзе дадаць да недакументаваных, пераносныя, памылка ахопленым рэалізацыі 80% Haskell, таму што Lisp з’яўляецца больш магутным, чым Haskell.

Мараль гэтай гісторыі з’яўляецца тое, што другасныя і трацічныя эфекты мае значэння. Тэхналогія не толькі ўплывае на тое, што мы можам зрабіць у адносінах да тэхналагічных пытаннях, ён таксама ўплывае на наша сацыяльнае паводзіны. Гэта сацыяльнае паводзіны можа контуру спіну і ўплывае на зыходныя тэхналагічныя пытанні ў стадыі разгляду.

Lisp з’яўляецца хваравіта красамоўнай прыкладам такога ўрока. Lisp настолькі магутным, што яна заахвочвае індывідуальную незалежнасць пункту крыважэрнасць. Гэтая незалежнасць зрабіў добрае ўзрушаюча інавацыі як у Lisp дзён машыны. Гэты ж незалежнасць таксама абцяжарвае намаганні адрадзіць “Lisp ўвесь шлях ўніз” сістэмы старых; ні адзін праект “АС Lisp” не сабраў крытычную масу са смерцю Сімволіка і LMI.

Адным з вынікаў гэтых другасных і троесных эфектаў з’яўляецца тое, што, нават калі Ліспе з’яўляецца найбольш выразны мова калі-небудзь, напрыклад, што гэта тэарэтычна немагчыма зрабіць больш выразны мова, Lispers будзе яшчэ чаму павучыцца ў іншых моў праграмавання. Хлопцы Smalltalk вучыў ўсіх – у тым ліку Lisp хакераў – рэч ці два аб аб’ектна-арыентаванага праграмавання. Чысты мова праграмавання і комба Моцарт / Оз можа мець некалькі сюрпрызаў самастойна.

Праклён Lisp не супярэчыць максіме Станіслава Datskovskiy: Працадаўцы аддаю перавагу, што работнікі будуць ўзаемазаменнымі, а не максімальна прадуктыўным. Занадта праўда. З вялікай цяжкасцю хто-небудзь адвес прадажнасць кіраўніцкага класа. Тым не менш, апошнія радкі яго нарысу з’яўляюцца праблематычнымі. А менавіта:

Што тычыцца “свабоднае праграмнае забеспячэнне” свету, ён ахвотна выступае супраць прамысловых догмы ў рыторыцы, але зусім не ў практыцы. Няма канцэпцыя пазбягалі куб сельскагаспадарчых пекла ніколі не атрымаў рэальны цягу масах аматараў.

У зносцы ён прапануе Linux у якасці прыкладу гэтага нежадання праводзіць розныя ідэі. Каб быць упэўненым, што ён мае кропку, калі справа даходзіць да аперацыйных сістэм (верхні каментар, у прыватнасці, невыносна тупы). Ён не ёсць кропка, калі справа даходзіць да моў праграмавання. Python і Рубі былі пад уплывам Lisp. Многія з сваіх прыхільнікаў выказаць павагу да Lisp, і некаторыя з іх цікавасці павялічылі рэнесанс Lisp. З якой-то справядлівасці, JavaScript быў апісаны як “схеме ў C вопратцы”, нягледзячы на ​​падзеі, якія адбываюцца ў гэтых куб сельскагаспадарчых пекла.

Тым не менш, нягледзячы на ​​гэта ўплыў, як у карпаратыўных і адкрытых светаў крыніцы, Lisp, да гэтага часу толькі частка праяўляльніка розуму акцыю, якая сёлетні ўраджай перадавых скрыптовых моў прыцягнулі. Закрытая кругагляд МВА не можа быць адзіным тлумачэннем гэтага. Праклён Lisp мае больш тлумачальную сілу.

Свабодныя асяроддзя распрацоўкі, даступныя для Lisp далей прыкладам праклён Lisp.

Гэта сорамна паказаць на гэта, але гэта павінна быць зроблена. Забудзьцеся пра машыну Lisp; мы нават не маюць сістэмы развіцця, якія адпавядаюць, што ў сярэднім у Smalltalk хакер прымае як належнае (“Я заўсёды адчуваў, Lisp з’яўляецца вышэйшым мову і Smalltalk з’яўляецца вышэйшым сераду.” – Рамон Леон). Калі яны не будуць плаціць тысячы даляраў, Lisp хакеры ўсё яшчэ затрымаліся з Emacs.

Джэймс Гослінг, аўтар першых Emacs, якія беглі на Unix, правільна паказаў, што Emacs прынцыпова не змянілася ў больш чым дваццаці гадоў. Гэта таму, што суправаджаюць Emacs ўсё яшчэ на вяршыні слаёў код канструкцыі які быў заснаваны таму, калі Emacs быў град-студэнцкі праект у MIT AI Lab, г.зн., калі развіццё Emacs быў яшчэ ўскосна фінансуе дзяржаўны доўг. Slashdotter могуць запярэчыць, што Emacs ўжо цалкам здольны і можа зрабіць што-небудзь, што любы іншы асяроддзя распрацоўкі можна зрабіць, толькі лепш. Тыя, хто выкарыстаў Машыны Lisp сказаць інакш.

Дык чаму не на Lisp хакеры пакласці хлопцаў Smalltalk ў належным месцы? Чаму яны не робяць сістэму свабоднага развіцця, які выклікае ў памяці некаторыя з згубленых славе LispM, нават калі яны не могуць прайграваць іншы LispM?

Прычына, чаму гэтага не адбылося з-за праклёны Lisp. Вялікая колькасць хакераў Lisp прыйдзецца супрацоўнічаць адзін з адным. Паглядзіце больш уважліва: Вялікія нумары з выглядам людзей, якія становяцца Lisp хакеры павінны супрацоўнічаць адзін з адным. І яны павінны супрацоўнічаць адзін з адным па канструкцыі, які не быў ужо зададзенай з самага пачатку. І не было б якіх-небудзь знешніх дысцыпліна, такіх, як венчурны капіталіст або іншых карпаратыўных майстры, каб трымаць іх у патрэбнае рэчышча.

Кожны праект мае трэнне паміж членамі, рознагалоссяў, канфліктаў больш стылю і філасофіі. Гэтыя сацыяльныя праблемы насуперак тым, што ні адзін буйны праект не можа быць дасягнута інакш. “Мы ўсе павінны трымацца разам, ці мы будзем усё вісець асобна.” Але выразнасць Lisp робіць гэты кампенсацыйнай сілы значна слабейшыя; заўсёды можна пачаць сваё ўласнае праекта. Такім чынам, асобныя хакеры вырашылі, што праблема не варта. Такім чынам, яны альбо выйсці з праекта, ці не далучыцца да праекту, каб пачаць з. Гэта праклён Lisp.

Можна нават ўзламаць Emacs, каб атрымаць тое, што гэта дастаткова добра. Такім чынам, праклён Lisp з’яўляецца саюзнікам горш, тым лепш.

Выразная сіла Lisp мае недахопы. Там няма такога паняцця, як бясплатны абед.

Comments are closed.