Парадигма HumanSpeak

от автора

Здравствуйте!
Представляю вашему вниманию парадигму HumanSpeak — словесно свободную кроссплатформенную концепцию API.

Почему?

  • Потому что надоело огромное количество языков и библиотек, которые реализуют одни и те же функции, но с разными наименованиями.
  • Потому что надоело лезть в справочник по языку, который используешь не первый месяц, чтобы вспомнить как называется функция, назначение которой очевидно.

Смысл

Идея возникла в процессе знакомства с JQuery. Как известно, доступ к элементам разметки осуществляется, в JQuery, через функцию $(), например:
$("edit_field") — получение доступа к элементу с идентификатором edit_field.

Однако, доступ таким образом(через единую функцию-обсервер) можно получать(теоретически, не в JQuery) не только к структуре, но также и к функциям!

Т.о. введя например: $("string length"), можно получить доступ к функции нахождения длины строки.
Данный способ доступа можно представить как единый кросс-языковый API. Который поможет избавить программиста от необходимости изучения языко-специфических наименований при переходе с одного языка на другой.

Пример №1

Достаточно запомнить $("string length") независимо от языка.
Вот список наименований одной единственной функции:

OCaml:     string_length("string")  Python:     len("string")  C:     strlen("string")  Pascal:     length('string')  Lua:     string.length("string")  Tcl:     string length "string" 

Пример с длиной строки прост, т.к. меняться в названии там почти нечему. Но все равно есть разница.

Пример №2

Запомнить нужно только одно:

$("string find char","SAMPLE STRING!!!","T") 

Вместо:

OCaml:     string.index("STR","T")  Python:     "STR".index("T")  C:     strchr("STR",'T')  Pascal:     pos('STR','T')  Lua:     string.char("STR","T")  Tcl:     string index "STR" "T" 

Некоторые справочники по языкам(строковые функции)

TCL: tmml.sourceforge.net/doc/tcl/string.html
C: www.cplusplus.com/reference/cstring/
OCaml: caml.inria.fr/pub/docs/manual-ocaml/libref/String.html
Pascal: www.freepascal.org/docs-html/rtl/system/stringfunctions.html

Некоторые выводы

Т.о. функция-обсервер выполняет вспомогательную функцию(основная цель — упрощение вспоминания, обеспечение читаемости).

Это не панацея для языковых полиглотов. Потому, что от языка к языку, API иногда упрощается(синтаксический сахар), напр: извлечение подстроки в Python( s[5:] ) — гораздо проще и быстрее чем писать $("extract substring"). Однако упор на вспоминаемость и читаемость. Гиппотетически, не нужно помнить КАК извлечь подстроку. Наименования функций всегда есть в памяти, потому они выражатся в наиболее естественной для человека форме: $("извлечь подстроку").
Возможность использования локализованных наименований — отдельная тема.

Какие проблемы решает?

Проблема множества разных языков далеко не только в наименовании, но зачастую и в разном принципе работы функций(напр. сравнения строк(вспомните strcmp в Си и функцию сравнения строк в других языках)).

Что мы достигнем?

  • Стандартные функции примут единое кросс-языковое наименование.
  • Стандартные функции будут иметь единый принцип работы.

Т.о. порог вхождения для языков снизится, и на первый план выйдут именно особенности языков программирования в чистейшем их воплощении — скобки и апострофы станут не массовкой, а актерами с главной ролью — это обеспечит их эволюцию и конкуренцию. Если сравнить синтаксис с воздухом, то раньше им просто дышали, но теперь его можно будет жевать, синтаксические особенности языков станут по настоящему ощутимыми, т.к. набор функций одинаков.

Идея в том, что данный API должен быть реализован на всех общеизвестных языках.

Далее возможно рассмотрение способов реализации как в скриптовых, так и в системных(структурных) языках(через единую функцию с переменным числом аргументов и кучу подфункций через switch).

*под стандартными функциями здесь понимается набор функций наиболее часто используемых и общих для большинства общеизвестных языков, возможность реализации которых не зависит от реализации конкретной программной платформы.

ссылка на оригинал статьи http://habrahabr.ru/post/231283/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *