Парадигма 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).
 
 * під стандартними функціями тут розуміється набір функцій найбільш часто використовуваних і загальних для більшості загальновідомих мов, можливість реалізації яких не залежить від реалізації конкретної програмної платформи.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.