Алгол и Баш
Удивительно, я и не догадывался, что иногда употребляю ключевые слова родом из «Алгола-68»!
Оказывается автор командной оболочки bsh Стивен Борн притащил ключевые слова IF/FI и CASE/ESAC прямиком из «Алгола». Позже оттуда они попали в более известный сейчас bash, на котором я нередко пишу.
Более того, Стивен Борн по всей видимости насколько крепко фанател по этому языку, что специальными макросами превратил Си, на котором написал bsh, в некое подобие «Алгола» (исходники есть в интернете).
Если скачать себе пару заголовочных файлов (и выкинуть из них всё то, что мешает компиляции), то можно и сейчас попробовать этот макроязык в деле (это я пузырьковую сортировку написал):
#pragma GCC diagnostic ignored "-Wimplicit-int"
#pragma GCC diagnostic ignored "-Wreturn-type"
#include "mac.h"
#include "mode.h"
#include <stdio.h>
bubbleSort(arr, n)
INT arr[], n;
BEGIN
INT i, j;
FOR i = 0; i < n - 1; i++
DO FOR j = 0; j < n - i - 1; j++
DO IF arr[j] > arr[j + 1]
THEN arr[j] = arr[j] - arr[j+1];
arr[j+1] = arr[j] + arr[j+1];
arr[j] = arr[j+1] - arr[j];
FI
OD
OD
END
printArray(arr, n)
INT arr[], n;
BEGIN
INT i;
FOR i = 0; i < n; i++
DO
printf("%d ", arr[i]);
OD
printf("\n");
END
main()
BEGIN
INT arr[] = { 0xFE, 0xED, 0xBE, 0xEF };
INT n = 1[&arr] - arr;
printArray(arr, n);
bubbleSort(arr, n);
printArray(arr, n);
END
Примерно так выглядят исходники bsh. Единственное моё добавление — BEGIN и END, которые Борн для описания тела функций не использует, но зато в «Алголе» принято делать именно так.
Кстати (век живи — век учись), такое неординарное объявление функций, как у меня в листинге (а я подсмотрел его в исходниках bsh), — как оказалось, устаревший синтаксис Си, причём он до сих пор поддерживается компиляторами.
Bash, конечно, довольно всратенький язык!
Сложно не согласиться!
В этом есть часть правды, какие-то редкие случаи использования действительно легко утрачиваются из памяти, но у меня, например, основное держится вполне прочно.
вы очень вежливый и сдержанный человек!
я пишу 1 баш скрипт в год поэтому у меня есть файл с тем что мне чаще всего нужно. я даже if не могу написать без заглядывания в него/в гугол.