Парадигма HumanSpeak

в 9:19, , рубрики: api, Программирование

Здравствуйте!
Представляю вашему вниманию парадигму 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).

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

Автор: xmankind

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js