Пол Грэм анансаваў новую мову праграмавання Bel

Мова Bel напісаны на мове Bel.

Пол Грэм анансаваў новую мову праграмавання Bel
У 1960 годзе Джон МкКарці апісаў Lisp - новы тып мовы праграмавання. Я кажу "новы тып" таму што Lisp уяўляў сабой не проста новую мову, але новы спосаб апісання моў.

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

Ён не ставіў за мэту апісаць мову праграмавання ў звычайным сэнсе – мову, якая выкарыстоўваецца, каб паказваць кампутару, што яму рабіць. У яго працы 1960 гады Lisp разумеўся як фармальная мадэль вылічэння падобна Машыне Цюрынга. МакКарці не задумваўся аб яе выкарыстанні на кампутарах, пакуль гэта не прапанаваў Стыў Расэл, яго дыпломнік.

У Lisp 1960 гады не было магчымасцяў, звычайных для моў праграмавання. Напрыклад, там не было лікаў, памылак ці ўводу/высновы. Таму людзям, якія выкарыстоўвалі Lisp як аснову для моў, якія выкарыстоўваюцца для праграмавання кампутараў, даводзілася дадаваць гэтыя магчымасці самім. І яны рабілі гэта за кошт адмовы ад аксіяматычнага падыходу.

Такім чынам, развіццё Lisp ішло ў два – і, здаецца, дастаткова незалежных – этапы: фармальны этап, прадстаўлены ў працы 1960 года, і этап рэалізацыі, у якім мова была адаптаваная і пашыраная для запуску на кампутарах. Асноўная работа, калі мераць колькасцю рэалізаваных магчымасцей, ішла на этапе рэалізацыі. Lisp 1960 гады, трансляваны ў Common Lisp утрымоўвае ўсяго 53 радкі. Ён робіць толькі тое, што неабходна каб інтэрпрэтаваць выразы. Усё астатняе было дададзена на этапе рэалізацыі.

Мая гіпотэза такая, што, нягледзячы на ​​цяжкую гісторыю, Lisp пайшло на карысць тое, што яго развіццё адбывалася ў дзве фазы; што першапачатковае практыкаванне па вызначэнні мовы праз напісанне яго інтэрпрэтатара на ім самім надзяліла Lisp яго лепшымі якасцямі. І калі так, чаму не пайсці далей?

Бел - Гэта спроба адказу на пытанне: што, калі замест пераходу ад фармальнага этапу да этапу выканання на раннім этапе, ажыццявіць гэты пераход як мага пазней? Калі вы будзеце працягваць выкарыстоўваць аксіяматычны падыход да таго часу, пакуль у вас не апынецца нешта блізкае да завершанай мовы праграмавання, якія аксіёмы вам спатрэбяцца, і як будзе выглядаць атрыманая мова?

Я хачу ўнесці яснасць наконт таго, што ёсць Bel, і чым ен не з'яўляецца. Хаця ў яго нашмат больш магчымасцяў, чым у Lisp МакКарці 1960 года, Bel ўсё яшчэ прадукт у фармальнай фазе. Як і Lisp, апісаны ў працы 1960 гады, гэта не мова, якую вы можаце выкарыстоўваць для праграмавання. Галоўным чынам, таму, што падобна Lisp МакКарці, ён не клапоціцца аб эфектыўнасці. Калі я дадаю нешта ў Bel, я апісваю сэнс гэтага дадання, не спрабуючы даць эфектыўную рэалізацыю.

Для чаго? Навошта працягваць фармальны этап? Адзін з адказаў - каб убачыць, куды нас можа завесці аксіяматычны падыход, што само па сабе з'яўляецца цікавым практыкаваннем. Калі б кампутары былі настолькі магутнымі, як нам бы хацелася – як бы тады выглядалі мовы?

Але я таксама веру, што магчыма напісаць эфектыўную рэалізацыю, заснаваную на Bel, дадаючы абмежаванні. Калі вам патрэбен мова, які валодае выразнай моцай, яснасцю і эфектыўнасцю, магчыма, варта пачаць з выразнай магутнасці і яснасці, і затым дадаць абмежаванні, чым рухацца ў процілеглым кірунку.

Так што калі хочаце паспрабаваць напісаць рэалізацыю, заснаваную на Bel - калі ласка. Я буду адным з першых карыстальнікаў.

У канчатковым рахунку, я прайграў некаторыя рэчы з папярэдніх дыялектаў. Або іх дызайнеры ўсё зрабілі правільна, або, знаходзячыся пад уплывам раней выкарыстоўваных дыялектаў, я не бачу правільнага адказу - час пакажа. Я таксама стараўся не адыходзіць занадта далёка ад пагадненняў, прынятых у Lisp. Што азначае, што калі вы ўбачыце адыход ад пагадненняў Lisp, магчыма, на тое былі свае прычыны.

Працяг апісання мовы тут.

За пераклад дзякуй: Denis Mitropolsky

PS

Крыніца: habr.com

Дадаць каментар