Sunday, January 14, 2007

Язык B и первый в мире hello world

Многие знают что до языка C++ был язык C, который, в свою очередь, вырос из языка B.

Выглядит он, надо сказать, довольно забавно с точки зрения C++ программера. Почитать про него можно тут на сайте bell labs. Почти все фичи присутствуют в C++, но есть некоторое количество всяких смешных нюансов:

  • типов в нем не было. то есть
    auto i; i = 3;
    
    это не C++09, как думают некоторые, это B :)
  • конструкции for там тоже не было. Был только while.
  • зато тернарный оператор ?: уже был
  • массив v[10] содержал 11 элементов с индексами от 0 до 10. Видимо эта фича как-то в генетической памяти записана, не знаю как можно иначе объяснить количество ошибок с доступом к одиннадцатому элементу в C++
  • в качестве escape-character использовался *, а не \. То есть "hello world*n" вместо "hello world\n"
  • да, и сама фраза "hello, world" впервые появилась именно в туториале к B (ну то есть стопроцентно, конечно, тут сложно утверждать, но похоже на то)
    *барабанная дробь* Исходник:
      main( ) {
        extrn a, b, c;
        putchar(a); putchar(b); 
        putchar(c); putchar(’!*n’);
      }
      a ’hell’;
      b ’o, w’;
      c ’orld’;
    


Monday, January 08, 2007

Глагол

В [info]ru_brainfucker обнаружена ссылка на фееричный язык "Глагол". Разрабатывается с 2003 года до сих пор.
Выглядит волшебно

ЗАДАЧА Голова();
ПЕР
  ч:Читать.Поток;
  п:Писать.Поток;
  чимя:Файл.ВПолного;
  двв,рез:КЛЮЧ;
  парам:ЦЕЛ;
УКАЗ
  парам:=1;
  ЕСЛИ парам >= Параметр.всего ТО 
    Ошибка1("Нет параметров") 
  КОН;
  Параметр.Текст(парам,чимя);
  ЕСЛИ чимя = "ВДОС" ТО
    двв:=ОТКЛ
  АЕСЛИ чимя = "ВВИН" ТО
    двв:=ВКЛ
  ИНАЧЕ
    Ошибка1("Неверный параметр")
  КОН;
  УВЕЛИЧИТЬ(парам);
  ЕСЛИ парам >= Параметр.всего ТО
     Ошибка1("Нет имени входного файла") 
  КОН;
  Параметр.Текст(парам,чимя);
  ЕСЛИ НЕ ОС.ПервыйПоискФ(чимя,поиск) ТО 
     Ошибка2(чимя," не найден(ы)") КОН;
  НовоеИмя
КОН Голова;
Лично мне больше всего нравится АЕСЛИ вместо elseif и ОТДЕЛ вместо паскалевского unit. Плюс к этому в дистрибутиве все файлы называются по-русски, типа "построить.bat" вместо "build", "опись" вместо descript.ion, "уборка.bat" – clean и т.п.

Живенько так представляешь, как выглядят какие-нибудь исходники на паскале для англоязычного нейтива. Правда в английском меньше различных склонений, так что, наверное, оно смотрится не так несуразно.

Ну а сама идея перевести паскаль на русский, конечно, далеко не нова. Собственно первый язык программирования, который я увидел, он примерно так и выглядел, назывался "Рапира" и работал, кажется, на мощном двухпроцессорном ПК "Электроника МС 0202".

Однако ж я думал что с тех пор такие фанаты русского языка от computer science как-то перевелись..