Perl і мовазнаўства

Арыгiнал: http://world.std.com/~swmcd/steven/perl/linguistics.html

Лары Уол з’яўляецца аўтарам Perl. Ён мае досвед працы ў лінгвістыцы, і прыносіць цікавую перспектыву для распрацоўкі мовы.

Тэма: Re: лінгвістыкі і Perl?
Ад: lwall@netlabs.com~~pobj (Larry Wall)
Дата: 1995/07/27
Арганізацыя: NetLabs, Inc., Лос-Альтос, Каліфорнія.
Групы навінаў: comp.lang.perl.misc

Томас Данбар <tdunbar@gserver.grads.vt.edu> напісаў:
У слайдах Лары Уол на пасяджэнні VHLL, ёсць некаторыя
: Вельмі цікавыя намёкі на лінгвістычных асаблівасцяў меркаванняў /
: У Perl (ESP “натуральны мову” Канцэпцыі слайдзе). гэта
: Пашыраныя ў любым месцы? асабліва ў сувязі з Perl, але таксама
: Мовы праграмавання WRT ў цэлым?

Не зусім, але я магу пашырыць на ім трохі прама тут.
Даведайцеся гэта адзін раз, выкарыстоўваць яго шмат разоў
Вы даведаецеся, натуральны мову адзін раз і выкарыстоўваць яго шмат разоў. Ўрок для дызайнера мовы з’яўляецца тое, што мова павінна быць аптымізаваны для выразнай сілай, а не для зручнасці навучання. Гэта лёгка навучыцца вадзіць гольф-кары, але гэта цяжка выказаць сябе ў адным.
Даведайцеся, як вы ідзяце
Вы не даведаецеся натуральны мова, нават адзін раз, у тым сэнсе, што вы ніколі не спыняйце вучыцца яго. Ніхто ніколі не даведаўся любы натуральны мова цалкам. На жаль, у інтарэсах артаганальнай, многія кампутарныя мовы распрацаваны такім чынам, што кожны градус волі (памернасці) даступная ва ўсім свеце. У гэтым ёсць свае станоўчыя моманты, калі вы разумееце, увесь мова, але можа прывесці да блытаніны, калі вы не робіце. Вы хацелі б, каб ігнараваць некаторыя з памераў, каб пачаць з. Вы хацелі б быць у стане гаварыць дзіцячы лопат і быць зразуметым. Гэта нармальна, калі мова з’яўляецца цяжкім для вывучэння, да таго часу, пакуль вы не павінны даведацца ўсё адразу.
Многія прымальныя ўзроўні кампетэнцыі
Гэта больш сацыялагічнага функцыі, у параўнанні з “даведацца, як вы ідзяце”, які з’яўляецца псіхалагічная асаблівасць. Людзі не супраць, калі вы кажаце падмноства натуральнай мовы, асабліва калі вы дзіця або замежнік. (За выключэннем у Парыжы, вядома.) Калі мова уладкованы так, што вы можаце “даведацца, як вы ідзяце”, то чакаецца, што кожны вучыцца, і гэта нармальна.
Некалькі спосабаў, каб сказаць тое ж самае
Гэта адзін больш антрапалагічнай функцыі. Людзі не толькі даведацца, як яны ідуць, але прыходзяць з розных слаёў грамадства, і ўведаеце, розныя падмноства мовы ў першую чаргу. Гэта Афіцыйна Добра ў галіне Perl для праграмавання ў падгрупе Perl, адпаведнай СЭД, AWK або У або З, або абалонкі, або BASIC, або Lisp, або Python. Або Фартран, нават. Проста таму, што Perl з’яўляецца змешванне моў праграмавання не азначае, што вы павінны змяшаць.
Няма сораму ў запазычанняў
У ангельскай мове (і іншых мовах, якія не пакутуюць крызіс ідэнтычнасці), людзі не супраць ідэі, праводзячы з іншых моў і зрабіць іх часткай мовы. Намаганні па падтрыманні «чысціню» мовы (натуральных або штучных) дамагчыся поспеху толькі ў стварэнні элітнага класа людзей, якія ведаюць шыбалет. Звычайныя людзі ведаюць лепш, нават калі яны не ведаюць, што “таемны пароль” азначае.
Нявызначаны памернасць
Навукоўцы хацелі б быць у стане знайсці рэчы, даючы «Вектар», гэта значыць, спіс каардынатаў ў прасторы вядомай памернасці. Гэта адна з прычын, яны хацелі артаганальнай – гэта азначае, што розныя кампаненты вектара незалежныя адзін ад аднаго. На жаль, у рэальным свеце звычайна не настроены на працу менавіта такім чынам. Большасць праблем, уключаючы праблемы лінгвістыкі, з’яўляюцца прадметам “атрыманне адсюль туды”, і геаграфія ў перыяд паміж мае моцны ўплыў на рашэнні якіх з’яўляюцца практычным. Праблемы, як правіла, вырашаецца на некалькіх узроўнях. Тыповы падарожжа можа ўключаць вашыя ногі, ваш аўтамабіль, эскалатар, які рухаецца тратуар, бруя, магчыма, некаторыя больш рухомыя тратуары або трамвай, іншая бруя, таксі, і ліфт. На кожным з гэтых узроўняў, існуе не так шмат “прамыя куты”, і ўсё гэта крыху фрактальнай ў прыродзе. З пункту гледжання мовы, вы кажаце тое, што атрымлівае блізка да таго, што вы хочаце сказаць, і тады вы пачынаеце яе перапрацоўкі па краях, як вы б спачатку планаваць свой маршрут паміж буйнымі аэрапортамі, і толькі потым турбавацца пра тое, як дабрацца да і ад аэрапорта.
Мясцовае двухсэнсоўнасць ў парадку
Людзі квітнеюць на двухсэнсоўнасці, так доўга, як гэта хутка вырашаныя. Як правіла, у натуральнай мове, неадназначнасць хутка вырашаны з дапамогай нядаўна вымаўленыя словы і тэмы. Займеннікі, як “гэта” ставяцца да рэчаў, якія знаходзяцца побач, сінтаксічна кажучы. Perl поўны маленькіх невыразнасцяў, што людзі нават не заўважаюць, таму што яны вырашаны так хутка. Напрыклад, многія тэрміны і аператары ў Perl пачынаюцца з аднолькавых знакаў. Perl вырашае іх у залежнасці ад таго, што гэта чакаў убачыць тэрмін або аператара, гэтак жа, як чалавек будзе. Калі вы кажаце, 1 & 2, ён ведае, што і з’яўляецца пабітавае І, а калі вы кажаце, і Foo, ён ведае, што вы тэлефануеце падпраграмы Foo.

У адрозненне ад многіх моцна тыпізаваных мовах ёсць “далёкі” двухсэнсоўнасці. C ++ з’яўляецца адным з горшых у гэтых адносінах, таму што вы можаце глядзець на + б і не маюць ні найменшага падання, што рабіць + у, не кажучы ўжо, дзе ён вызначаны. Мы пасылаем людзей у аспірантуру, каб навучыцца вырашаць далёкія невыразнасцяў.
Знакі прыпынку па просодии і інтанацыі
Натуральны мова, натуральна, перамяжоўваецца палёў, высілкаў і паўзаў, якія мы выкарыстоўваем, каб паказаць, як словы звязаныя. Так званы “мова цела” і ўступае ў гульню тут. Некаторыя з гэтых пунктуацыі напісана на англійскай мове, але многае з гэтага не з’яўляецца – ці толькі набліжана. Тэндэнцыя ў апошнія электронных камунікацый быў вынайсці розныя формы пунктуацыі. :-)

Некаторыя кампутарныя распрацоўшчыкі мовы думаюць, што пунктуацыя зло; Я сумняваюся, іх настаўніка англійскай пагодзіцца.
Мнагазначныя па нумары, справы і парадак слоў
Адной з прычын, мова можа сысці з некаторымі мясцовымі невыразнасцяў, што іншыя няяснасьці душацца з дапамогай розных механізмаў. Англійская мова выкарыстоўвае нумар і парадак слоў, з перажыткамі ў выпадку сістэмы ў займеннікаў: “Чалавек паглядзеў на мужчын, і яны зноў паглядзела на яго.” Гэта зусім ясна ў гэтым сказе, які робіць тое, што каму. Сапраўды гэтак жа, Perl, з лічбамі маркераў на яго назоўнікаў; гэта значыць, $ сабака з’яўляецца адным сабака, иdog з’яўляецца (патэнцыйна) многія. Так і $ @ трохі, як “гэта” і “яны” на англійскай мове. Perl таксама выкарыстоўвае парадак слоў: суб выкарыстанне азначае нешта зусім іншае ад выкарыстання суб. Perl не рабіць з тэматычных адрозненняў, у адрозненне ад абалонак, якія робяць выкарыстанне-VS-згадванні адрозненні, выкарыстоўваючы прэфікс $. Хоць я думаю, калі вы дазволіце, што вы маглі б разлічваць на Perl цытуе ў выглядзе склону. На ледзь больш мудрагелістых узроўні, Perl 5 у \ аператар з’яўляецца свайго роду маркерам або выпадак прыназоўніка указаннем згадкі, а не выкарыстання. Але, як і ў большасці кампутарных моў, з прыназоўнікам паняцці, як правіла, выяўляецца ў пазіцыі спісу аргументаў. (Хоць гэта, вядома, можна напісаць званкі, выкарыстоўваючы найменныя параметры ў Perl, і ключы хэшаў часам функцыянуюць як прыназоўнікі.)

move $rook from => $qr_pos, to => "kb3";

Топiкалiзацыя
Што тычыцца topicalization, я павінен адзначыць, што гэтая прапанова пачынаецца з аднаго. Topicalizer проста ўводзіць тэму вы, маючы намер пагаварыць. Ёсць некалькі сінтаксічныя формы на англійскай мове, найпросты з якіх проста назоўнік: “Морква, я ненавіджу іх.” Паскаль мае “з” пункта, які функцыянуе ў якасці topicalizer. Topicalizers часам можа даць спіс тым, у гэты момант вы бачыце такія словы, як “для бла і бла, бла зрабіць”. У Perl, існуюць розныя рэчы, якія працуюць у topicalizers. Вы можаце сказаць,

foreach (@dog) { print $_ }

Гэта нават можа быць выкарыстана паасобку:

for ($some_long_name) { s/foo/bar/g; tr/a-z/A-Z/; print; }

Шаблон супадае (і ці сапраўды ўмоўныя), як правіла, функцыянуюць як topicalizers ў Perl:

/^Subject: (.*)/ and print $1;

Дыскурс структура
Дыскурс структура, як выказванне больш, чым прапанова разам узятыя. Розныя мовы і культуры маюць розныя правілы пра тое, як расказаць анекдот або гісторыю, напрыклад, ці як напісаць кнігу пра Perl. Некаторыя кампутарныя мовы, а фіксаваная правілы для вялікіх структур. COBOL і Паскаль прыходзяць на розум. Perl, як правіла, даволі свабодна пра тое, што замова вы пакласці вашыя заявы, за выключэннем таго, што гэта, хутчэй за Арыстоцеля ў патрабуючы, каб забяспечыць відавочнае пачатак і канец для вялікіх структур, выкарыстоўваючы фігурныя дужкі. Але вы маглі б сцвярджаць, што амаль #! / USR / бен / Perl адпавядае “Даўным-даўно”, у той час як __END__ азначае “І жылі яны доўга і шчасліва».
Праномiнализацiя
Мы ўсе ведаем пра займеннікаў і іх выкарыстання. Ёсць шэраг займеннікаў у Perl: $ _ азначае “гэта”, и_ правіла, азначае “іх”. (Але $ 1, $ 2 і г.д. таксама займеннікавыя спасылкі назад у папярэдніх падрадкоў ў мінулым шаблоне, пра якія мы згадвалі можа функцыянаваць як topicalizers.) На працягу цыкл па кожнаму элементу або Grep $ _ гэта не проста копія элемента ў пытанні , але псеўданім для яго. Сапраўды гэтак жа, _ спіс спасылак на аргументаў функцыі, і аргументы могуць быць зменены шляхам змены элементов_.
Няма тэарэтычныя восі ня шліфаваць
Прыродныя мовы выкарыстоўваюцца людзьмі, якія па большай частцы не даюць рип, як элегантны дызайн іх мове. На працягу некалькіх пісьменнікаў, якія імкнуцца зрабіць пункт у найбольш эфектыўным спосабам, акрамя, звычайныя людзі рассейваюць ўсякія рэзервавання на працягу ўсёй іх сувязі, каб пераканацца ў тым разуменні ,. Яны выкарыстоўваюць усе, што словы прыходзяць на рукі, каб атрымаць іх праз кропку, і праца на ёй, пакуль яны збілі рэч да смерці. Як правіла, гэта не з’яўляецца праблемай. Яны цалкам гатовыя, каб даведацца новае слова часам, калі яны бачаць, што гэта будзе карысна, але ў адрозненне ад адвакатаў ці камп’ютэрных навукоўцаў, яны адчуваюць сябе крыху неабходнасць вызначэння шмат новых слоў, перш чым яны кажуць, што яны хочуць сказаць.

З пункту гледжання камп’ютэрных моў, гэта даказвае, для прадвызначэння часта выкарыстоўваюцца паняцці, так што людзі не адчуваюць неабходнасць зрабіць так шмат азначэнняў. Даволі некалькі сцэнарыяў Perl не ўтрымліваюць вызначэння наогул. Смею вас, каб знайсці праграму C ++ без вызначэння.
Стыль не прымяняюцца, за выключэннем ціскам аднагодкаў
Мы не ўсе павінны пісаць так, як Фолкнер, або праграмы, як Дейкстры. Я з задавальненнем сказаць людзям, што мой стыль праграмавання, і я нават скажу ім, дзе я думаю, што іх уласны стыль незразумела або прымушае мяне скакаць праз абручы псіхічных. Але я раблю гэта як калега праграміст, а не як бога Perl. Некаторыя распрацоўшчыкі мовы спадзяюся ўжываць стыль з дапамогай розных друкарскіх сродкаў, такіх як прымус (больш ці менш) адзін аператар у радку. Гэта ўсё вельмі добра для паэзіі, але я не думаю, што я хачу, каб прымусіць усіх пісаць вершы ў Perl. Такія стылістычныя абмежаванні павінны добраахвотным або ў найбольш ахоўваецца кансенсусу вашых прыяцеляў.
Сумесная дызайн
Ніхто не распрацоўвае натуральны мова самі па сабе, калі іх імя не бывае Толкіен. Мы ўсе ўклад у распрацоўку нашай мовы па нашай запазычанняў і нашых чаканкі, капіюючы тое, што мы думаем, што гэта крута і устрымліваючыся ад таго, што мы думаем, што гэта obfuscational. Лепшыя штучныя мовы супрацоўніцтва – нават з мовай Perl, як, калі адзін чалавек, здаецца, быць адказным за яго. Большасць добрых ідэй Perl ня былі арыгінальныя са мной. Некаторыя з іх прыйшлі з іншых моў, а некаторыя з іх былі прапановы, зробленыя рознымі людзьмі, як мы пайшлі разам. Калі вы лічыце, мова, ўключаюць у сябе розныя культурныя атрыбуты (бібліятэкі, BIN каталогі), якія выходзяць разам з мовай, то нават такія мовы, як C, або Ада, або C ++, ці нават абалонак Unix з’яўляюцца супрацоўніцтва па многіх і многіх людзей. Perl не выключэнне.
“Непазбежнае” Дывергенцыя
Таму што мова распрацаваны многіх людзей, на любой мове, непазбежна разыходзіцца на дыялекты. Гэта можа быць магчымым, каб затрымаць гэта, але і для любога жывога мовы сілы разыходжанні амаль заўсёды мацней сіл канвергенцыі. POSIX спрабаваў аб’яднаць System V і BSD, і як толькі яны сціснуў рэчы разам у гэтым вымярэнні, колькасць варыянтаў Unix выбухнула ў некалькіх іншых вымярэннях. Ўрок для мовы дызайнера, каб пабудаваць у выразныя механізмы так, што гэта лёгка вызначыць, які варыянт мовы слухалася. Perl 5 мае відавочны механізм пашырэння, для якіх вы паказваеце, выкарыстоўваючы “выкарыстоўваць” палажэнні, якія віды спецыяльных семантыкі або “дыялекты” вы збіраецеся спадзявацца на. Perl 4 не было гэтага, і была значна больш ціску, каб пакласці розныя рэчы ў мове, які не належыць у базавым мове. Спадзяюся, што зараз мы можам стабілізаваць “асноўны” Perl, так што там менш трэба прыдумляць oraperl, sybperl, isqlperl і г.д.

Спадзяюся, вы знойдзеце гэта карысным.

Comments are closed.