Кіріспе
Қысқа командалық жол нұсқаулығы
Компьютерлік бағдарламалауда бір жолдық бағдарлама бастапқыда операциялық жүйе қабығының командалық жолына енгізілген, бір жол мәтіндік кіріс арқылы белгілі бір функцияны орындайтын нұсқау болды. Қазіргі кезде бір жолдық – бұл қабық тілінде жазылған өрнек болуы мүмкін; интерпретаторды бағдарламаның көзімен бірге шақырып, оны орындау; компиляторды көзімен бірге шақырып, бағдарламаны компиляциялау және компиляцияланған бағдарламаны орындау үшін нұсқаулар. AWK, sed және Perl сияқты скрипттерді жазуға арналған динамикалық тілдер дәстүрлі түрде бір жолдықтарды жасауға өте қолайлы. Unix қабығы немесе Windows PowerShell сияқты қабық интерпретаторлары қуатты бір жолдықтарды құруға мүмкіндік береді. "Бір жолдық" деген сөз тіркесі енді бір жолмен пайдалы нәрсені істейтін кез келген тілдегі бағдарламалық кодты да қамтиды.
an expression written in the language of the shell;
the invocation of an interpreter together with program source for the interpreter to run;
the invocation of a compiler together with source to compile and instructions for executing the compiled program. Certain dynamic languages for scripting, such as AWK, sed, and Perl, have traditionally been adept at expressing one liners. Shell interpreters such as Unix shells or Windows PowerShell allow for the construction of powerful one liners. The use of the phrase one liner has been widened to also include program source for any language that does something useful in one line.
Тарих
Бір жолды бағдарлама тұжырымы 1960 жылдардан бері APL бағдарламалау тілінің пайда болуымен белгілі болды. APL тілінің лаконикалық синтаксисі мен қуатты математикалық операторлары пайдалы бағдарламаларды бірнеше символмен көрсетуге мүмкіндік берді. 1970 жылдары бір жолды бағдарламалар үй компьютерлерінің және BASIC тілінің дамуымен байланысты болды. Компьютерлік журналдар BASIC тілінің көптеген диалектілерінде бағдарламаларды жариялады. Кейбір журналдар тұрақты түрде әсерлі, қысқа және бір жолды бағдарламаларға арналған рубрикаларға орын берді. "One liner" сөзі "The AWK Programming Language" (кітап көбінесе TAPL деп аталады) кітабының мазмұнында екі рет кездеседі. Бұл кітап Unix операциялық жүйесінің бір бөлігі болып табылатын AWK бағдарламалау тілін түсіндіреді. Авторлар бір жолды парадигманың туындауын ертедегі Unix машиналарындағы күнделікті жұмыстарымен байланыстырады: Осы бастапқы бір жолды анықтамасы бағдарламаны кез келген компиляциясыз дереу орындауды білдіреді. Осылайша, қатаң мағынада, тек интерпретацияланатын тілдердің бастапқы коды ғана бір жолды болып саналады. Бірақ бір жолды бағдарламаның бұл қатаң түсінігі 1985 жылы IOCCC C тілі үшін "Ең жақсы бір жолды бағдарлама" санатын енгізген кезде кеңейтілді, ал C – компиляцияланатын тіл.
Notice that this original definition of a one liner implies immediate execution of the program without any compilation. So, in a strict sense, only source code for interpreted languages qualifies as a one liner. But this strict understanding of a one liner was broadened in 1985 when the IOCCC introduced the category of Best One Liner for C, which is a compiled language.
Мысалдар
Бір жолдық бағдарламалар бағдарламалау тілдерінің айырмашылығын және күшін көрсету үшін де қолданылады. Көбінесе, бір жолдық бағдарламалар бағдарламалау шеберлігін көрсету үшін пайдаланылады. Кім ең керемет бір жолдық бағдарлама жасай алатынын анықтау үшін жарыстар жиі өткізіледі.
ТАҢДЫРЫЛЫҚ
BASIC-тің бір жолы әдетте 255 таңбаға дейін сыйымды, ал бір жолды бағдарламалар қарапайым ойындардан графикалық демонстрацияларға дейін болады. Ең белгілі демонстрациялық бір жолды бағдарламалардың бірі, бұлжырақтық тілде "10PRINT" деп аталады, ол Commodore 64 үшін жазылған:
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
10 PRINT CHR$(205.5+RND(1)); : GOTO 10
Python-тың атауы
Бір қатарлы жазуларды Unix командалық жолында тікелей орындау Python-ның cmd жалаушасын (қысқаша c) пайдалану арқылы жүзеге асырылуы мүмкін және әдетте бір немесе бірнеше модульдерді импорттауды қажет етеді. Операторлар жаңа жолдардың орнына ";" арқылы бөлінеді. Мысалы, Unix тізімінің ұзын форматының соңғы бағанын басып шығару үшін: ls -l | python -c "import sys; [sys.stdout.write(' '.join([line.split(' ')[-1]])) for line in sys.stdin]"
ls l | python c "import sys;[sys. stdout. write(' '. join([line. split(' ')[ 1]])) for line in sys. stdin]"
Windows PowerShell бағдарламасы
Файлдан "сөздер.txt" палиндромдарды табу. "сөздер.txt" файлының мазмұнын алу | Мұнда { $ eq join $ [($ length 1) 0] } PowerShell-дегі құбыр семантикасы бір жолдық бағдарламалармен күрделі сценарийлерді іске асыруға мүмкіндік береді. Бұл PowerShell сценарийіндегі бір жолдық команда, үтірмен бөлінген мәндер файлынан атаулар мен сандар тізімін алып, әр атау үшін сандардың қосындысын есептейді. ipcsv .\жеміс.txt –H F,C | Group F | %{@{"$($Name)"=($Group|measure C sum).Sum}|sort value
Get Content words. txt | Where { $ eq join $ [($ length 1) 0] }
Piping semantics in PowerShell help enable complex scenarios with one liner programs. This one liner in PowerShell script takes a list of names and counts from a comma separated value file, and returns the sum of the counts for each name. ipcsv .\fruit. txt –H F, C|Group F|%{@{"$($ Name)"=($ Group|measure C sum). Sum|sort value