INTERCAL — разлика између измена

Садржај обрисан Садржај додат
мНема описа измене
Нема описа измене
Ред 9:
==Историја==
 
Према оригиналном приручнику аутора,''INTERCAL Reference Manual''<ref name="manual"> "INTERCAL reference manual".Скинуто и архивирано са [https://web.archive.org/web/20110716084816/http://oops.se/~urban/pit/intercal.ps Internet Archive] 28.10.2018</ref>, пун назив језика је "''Compiler Language With No Pronounceable Acronym''", скраћено "INTERCAL". <br />
Прва имплементација овог језика је користила бушене картице и [[EBCDIC]] сет знакова. Да би се омогућило INTERCAL-у да ради на рачуанрима који користе [[ASCII]] код, морале су се направити две измене: operator ¢ је замењен са operatorom $, који је представљао "повећање трошкова софтвера у односу на хардвер"
и оператор ⊻ је замењен са оператором ? као унарни [[exclusive-or]] оператор да би "јасно описао реакцију просечног човека када се први пут сусретне са овом наредбом"<ref name="manual"></ref>. у новијим верзијама INTERCAL-а, старији оператори су подржани као алтернативе, а INTERCAL програми се сада могу кодирати у [[ASCII]], Latin-1, или [[UTF-8]] коду.<ref>"[https://en.wikipedia.org/wiki/INTERCAL#cite_note-5 INTERCAL]". Чланак са Википедије. Приступљено 29.10.2018</ref>
 
==Детаљи==
Ред 17:
 
Прилично је позната и често је практикована чињеница да је високо цењен човек чији је посао тешко докучив. На пример, када би неко изјавио да је најлакши начин да се меморише вредност 65536 на 32-битној променљивој у INTERCAL-у: <br />
<source lang="fortran">
 
DO :1 <- #0¢#256 <br />
</source>
 
сваки разуман програмер би рекао да је та изјава апсурдна. Пошто је то заиста најлакши начин, програмер би изгелдао глупо пред својим шефом, који би се задесио ту, као што шефови иначе раде. Последица не би била ништа мање поражавајућа да је програмер био у праву. <br />
 
INTERCAL има много карактеристика дизајнираних да учине естетски доживљај програмера још више незадовољавајућим'- користи наредбе као што су "READ OUT", "IGNORE", "FORGET", и кључне речи као што су "PLEASE". Постоје два разлога због којих последња кључна реч може да доведе до одбијања програма од стране компајлера: ако се "PLEASE" не појављује довољно често, програм се сматра недовољно учтивим. Са друге стране, ако се поменута кључна реч појављује превише често, програм се сматра претерано учтивим. Мада је ова карактеристика постојала у оригиналном INTERCAL компајлеру, она је у програмском стандарду водила као "undocumented".<ref name="undocumented">"[https://web.archive.org/web/20080223094001/http://www.progsoc.uts.edu.au/~sbg/intercal/ick.html C-INTERCAL supplemental reference manual]". Додатни приручник за C-INTERCAL. Приступљено 29.10.2018 </ref> Упркос ограниченој и развученој синтакси овог језика, INTERCAL је ипак рачунски универзалан програм- уз довољно меморије, INTERCAL може да реши сваки проблем који и Универзална [[Тјурингова машина]] може да реши. Ипак, већина имплементација INTERCAL-а извршавају проблеме прилично споро. [[Бенчмарк (рачунарство)|Бенчмарк]] [[Ератостеново сито]], рачунајући све просте бројеве мање од 65536, био је тестиран на рачунару серије [[Сан мајкросистемс|Sun]] [[SPARCstation 1]]. У програмском језику C, за извршавање овог програма било је потребно мање од пола секунде, док је исти програм у INTERCAL-у извршавао преко седамнаест сати. <ref> "[http://catb.org/~esr/intercal/stross.html Intercal -- the Language From Hell]" 23.3.2009. Приступљено 30.10.2018</ref>
 
==Документација==
[[Датотека:INTERCAL Circuitous Diagram.PNG|мини|"Заобилазни диаграм" из приручника INTERCAL Reference Manual, који објашњава "select" оператор.]]
Приручник ''INTERCAL Reference Manual'' садржи многа парадоксална, бесмислена и хумористичка упутства: <br />
 
''Пажња! Ни у ком случају немојте помешати значење појмова мреже и оператора преплитања, осим у збуњујућим околностима!'' <br />
 
Приручник садржи и "[[крајник]]", како је објашњено у фусноти:"''4)Пошто сви други приручници са напоменама садрже "слепо црево", одлучено је да приручник за INTERCAL садржи неки други тип одстрањивог органа.''"<ref name="manual"></ref> <br />
 
INTERCAL приручник даје необична имена свим знаковима [[ASCII]] кода који нису алфанумерички: знак <code>'</code> и <code>"</code> су "искре" и "зечије уши", тим редоследом (изузетак је знак [[Амперсенд|&]], јер како програмски речник ''[[Jargon File]]'' наводи: "ШстаШта би могло бити луцкастије?"). Оператор доделе, који је у многим програмским језицима представљен као знак једнакости је у INTERCAL-у представљен скупом знакова који представљају стрелицу која показује улево <code><-</code>, а састоји се од знака "мање од" и црте, јасно означавајући да леви операнд "добија" вредност.
 
==Синтакса==
Унос(помоћу инструкције <code>WRITE IN</code>) и излаза (користећи <code>READ OUT</code> инструкцију) не користе уобичајене формате записа- у INTERCAL-72, инструкција ''WRITE IN'' уписује број чије се цифре записују као текст на енглеском језику (као ''SIX FIVE FIVE THREE FIVE''), а ''READ OUT'' га избацује као "исецкане" [[Римски бројеви|римске бројеве]].<ref name="manual"></ref>
Новије верзије имају сопствени улазно-излазни систем.<ref name="clc"/><ref name="undocumented"/> Коментари се могу постићи ако се користе инвертне команде које укључују ''NOT'' или ''N'T''.<ref name="manual"/>
===Структуре података===
INTERCAL-72(оригинална верзија INTERCAL-а) има само четири [[Tipovi podataka|типа података]]- 16-[[Бит (рачунарство)|битни]] [[интеџер]] (представљен са <code>.</code>, именован "тачка"), 32-битни интеџер (<code>:</code>, именован "двотачка"), [[низ]] од 16-битних интеџера(<code>,</code>, именован"реп"), и низ од 32-битних интеџера (<code>;</code>,именован"хибрид"). Постоји 65535 доступних променљивих за сваки тип, означени нпр. бројевима од <code>.1</code> до <code>.65535</code> за 16-битне интеџере. Међутим, свака од тих променљивих има свој [[Стек (апстрактни тип података)|стек]], па на њима могу даље да се извршавају push и pop операције(у INTERCAL-у названи STASH и RETRIEVE), увећавајући комплексност структура података.<ref name="manual"/> Више данашњих верзија INTERCAL-а имају или су задржали већину истих структура података, са одговарајућим изменама:
*TriINTERCAL, који модификује радикс сортирање којим су бројеви представљени и може да користи тринарни бројевни систем као основни(10-тритни уместо 16-битног)<ref name="undocumented"/>.
*CLC-INTERCAL имплементира значајан број сопствених структура података, као што су "classes and lectures", постизајући да основни типови структура података меморишу више информација пре него да уводе нове типове података.<ref name="clc"/> Низови су прорачунавани тако што им се додају вредности ако им је променљива [[Скалар (рачунарство)|скаларног]] типа. Константе се могу употребљавати, и представљане су са <code>#</code> ("мрежа" у INTERCAL-у) и праћене самом константом, записане као децимални број. Константе представљене у интеџерима су подржане само у опсегу од 0 до 65535.
 
==Напомене==
Преузето из „https://sr.wikipedia.org/wiki/INTERCAL