Парадигма HumanSpeak. Реализация и её детали

Автор: admin от 6-08-2014, 19:05, посмотрело: 801


Здравствуйте!

Теперь у парадигмы появился собственный репозиторий:
github.com/xmankind/HumanSpeak

В продолжение предыдущей темы:
Парадигма HumanSpeak

Коротко


HS — это(по плану) кросс-языковая библиотека для того чтобы избавить программиста от обязательного запоминания названий базовых функций при переходе с одного языка на другой.

Вместо написания разнотипных названий в разных языках:
string_length("string")
len("string")
strlen("string")
length('string')
string.length("string")
string length "string"

достаточно будет запомнить:
hs("string length", "string")



О названиях операций


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

О строгой типизации


Проблема использования HS в языках со статической типизацией — возможность указания только одного типа для возвращаемого значения функции.
Поэтому выбран универсальный тип данных — строка.
Это требует использования вспомогательных функций, которые преобразуют результат к нужному типу.
Такие функции именуются следующим образом:
hsi — если результат должен оказаться числовым значением.
hsb — если результат должен оказаться булевым значением.
Пример:
if ( hsb(hs("string equal","abc","def")) ) { ... }
printf("%d", hsi(hs("string length","abcdef")));

Хотя в последней строчке нет необходимости:
puts(hs("string length","abcdef"));

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

Уточнение:
hs("string equal","abc","def") -> "TRUE"
hsb(hs("string equal","abc","def")) -> true


О динамической типизации


Как видно, HSAPI удобнее всего использовать в языках с динамической типизацией(PHP, Python, Lua, Ruby и т. д.):

  1. Не требуется преобразование результата hs() к нужному типу как в статической.

  2. Не требуется следить за выделением и освобождением памяти.



Об обработке ошибок


Обработки ошибок пока нет.

Система контроля ошибок планируется пост-фактум — после выполнения одной из функций HSAPI. Примерный вид:
s:=hs("string substring","hello",4,9);
if hsb(hs("any error")) then
	writeln(hs("get error"));


О счете в string substring, string find и других


Счет с нуля. Выбор пал на счет с нуля т.к. именно он есть в большинстве языков.
Для строк указываются включительные, начальное и конечные, значения.
Пример:
hs("string substring","hello",1,3) => "ell"


Потенциал


По сути, операции HS могут выполнять кодогенерацию:
if(strcmp(s,"string catenate")==0){

	char* arg1=va_arg(varg,char*);
	char* arg2=va_arg(varg,char*);
	char* buff = (char*)calloc(strlen(arg1)+strlen(arg2),sizeof(char));
	
	va_end(varg);
	strcat(buff,arg1);
	strcat(buff,arg2);
	
       puts("char* buff = (char*)calloc(strlen(s1)+strlen(s2),sizeof(char));");
       puts("strcat(buff,s1);");
       puts("strcat(buff,s2);");

	return buff;
}

Это, однако, не избавляет от необходимости следить за объявлением переменных, конфликтом их имен и прочим. Но позволяет практически сразу получить конструкцию алгоритма на требуемом языке.

Unit-test для C


hs("string length","jhfgd") = 5
hs("string catenate","abc","def") = "abcdef"
hs("string equal","abc","abcdef") = "FALSE"
hsb(hs("string equal","abc","abcdef")) = false
hs("string find","hello world!!!","or") = 7
hs("string substring","hello world!!!",5,7) = " wo"
hs("string delete","hello world!!!",8,10) = "hello wo!!!"
hs("string insert","hello world!!!","___",3) = "hel___lo world!!!"

О путях развития


Можно реализовать HS в виде консольной утилиты, которая выдает код использования функций по запросу(напр. "string length" ), для конкретного языка.
Это в свою очередь позволяет изготовить плагин для Vim(и прочих IDE), который будет интерпретировать запрос и преобразовывать его в код на конкретном языке:
string find php<tab>
strpos($haystack, $needle);
http://habrahabr.ru/post/232497/#habracut

Категория: Программирование

 

IT — плохая наука

Автор: admin от 6-08-2014, 16:35, посмотрело: 403

Мы заворачиваем бинарные данные в base64 чтобы гонять их по текстовым протоколам…

Категория: Программирование

 

С днем рождения, Кевин Митник!

Автор: admin от 6-08-2014, 15:35, посмотрело: 1511

С днем рождения, Кевин Митник!
Как вы думаете, стоит ли признать 6 августа днём хакера?
(или днем социальной инженерии)

Кевин является выдающимся хакером и социальным инженером по следующей причине.
Он «хакнул систему» на метауровне. С точки зрения ТРИЗ он добился идеального конечного результата.
Кевин организовал все так, что если раньше за то, чем он занимался его преследовали, то теперь за то, чем он занимается стоят в очередь и платят деньги.

(на фото: Стив Возняк дарит Митнику компьютер Apple)

Еще один примечательный факт, что Кевин не поступал в университет, а учился по настоящим учебникам мануалам, которые скачивал с хакнутых компов.


Хронология ранних хаков Митника

С днем рождения, Кевин Митник!
12 лет
— первые мошенничества с телефоном;
15 лет
— подделка автобусных билетов;
16 лет
— взлом школьной компьютерной сети;
— взлом радиосвязи Макдональдса;
17 лет
— первое незаконное проникновение на территорию Pacific Telephone;
— «диссертация по взлому RSTS/E»;
— «подруга» Кевина совершила взлом, воспользовавшись данными Митника, а обвинили его;
— проникновение в здание COSMOS;
— первый условный срок;
18 лет
— взлом Университета Южной калифорнии, арест;
25 лет
— первый тюремный срок — 12 месяцев, запрет пользоваться телефоном, под предлогом того, что Митник может взломать NORAD;
28 лет
— взлом телефона Novatel (с использованием соц. инженерии), что позволяло менять Митнику ESN.


Под катом несколько видео-интервью Митника, история о взломе радиосвязи Макдональдса и ссылки на интересные статьи.

Категория: Информационная безопасность

 

Мониторим каналы связи на маршрутизаторах HP MSR NG

Автор: admin от 6-08-2014, 15:35, посмотрело: 880

— Знакомьтесь! Алиса, это пудинг! Пудинг, это Алиса! Унесите!…
Ну вот, вас только познакомили, а ты уже на него с ножом!
(с) Льюис Кэрролл. Алиса в стране чудес

Прошел уже год, с тех пор как компания HP обновила линейку маршрутизаторов корпоративного класса HP MSR. Новые маршрутизаторы так и назвали – маршрутизаторы нового поколения или MSR NG. Это абсолютно новые устройства с аппаратной точки зрения, использующие многоядерные процессоры с встроенным ускорителем шифрования, шину PCIE 2.0 и заметно больший объем как оперативной, так и флэш памяти. Прежде всего новая аппаратная платформа позволила получить многократный прирост производительности, который помог компании HP обогнать многих именитых “коллег по цеху”. Конечно же, для реализации этой производительности потребовалось серьезным образом переработать и операционную систему, называется она по прежнему HP Comware, а вот версия уже 7. С появлением этой ОС помимо повышения надежности и производителньости появилось масса новых функций, таких как: улучшенная технология создания динамических VPN – HP ADVPN, поддержка отказоустойчивого IRF стекирования маршрутизаторов, встроенная система автоматизации EAA, межсетевой экран с зонами и еще много других полезных в сетевом хозяйстве функций.
Этой статьей мы начинаем знакомить читателей нашего блога с маршрутизаторами HP MSR NG и новым функционалом операционной системы HP Comware 7. Первая статья из этого цикла, она посвящена примеру решения распростаненной задачи мониторинга каналов связи с помощью маршрутизатора HP MSR NG.

Категория: Программирование, Сетевые технологии

 

Саксофон впервые распечатали на 3D принтере

Автор: admin от 6-08-2014, 14:30, посмотрело: 605

Саксофон впервые распечатали на 3D принтере

Сейчас, поскольку 3D принтеры становятся все более недорогими и практичными, эти устройства покупают уже не только гики, но и обычные люди, которым нужно печатать что-то по работе, или для себя. В общем-то, и спектр объектов, которые печатают на 3D-принтерах, постоянно расширяется.

Это и игрушки, и автомобили, и целые дома. Печатают даже музыкальные инструменты, включая гитары и скрипки. На днях в Сети появилась информация о первом саксофоне, распечатанном на 3D принтере.

Категория: Железо » Гаджеты

 

«Кассини» получил снимок «глаза Сатурна»

Автор: admin от 6-08-2014, 14:30, посмотрело: 447

[img]http://www.nasa.gov/sites/default/files/styles/946xvariable_height/public/pia18273_full.jpg?itok=7DakjqyM[/img]

Атмосферные бури на Юпитере и Сатурне — очень интересные объекты для изучения. На Юпитере наиболее известным является «Большой вихрь», образование, в котрое можно поместить пару десятков Земель.

На Сатурне это шестигранный атмосферный шторм, который не так давно был снят на видео аппаратом «Кассини» с применением цветных фильтров.

«Кассини» получил снимок «глаза Сатурна»

Теперь Кассини, пролетая на расстоянии 2,2 миллионов километров от Сатурна, получил детальный снимок «глаза Сатурна» — центра того самого шестиугольного шторма. По оценкам специалистов, диаметр «глаза» составляет 2 тысячи километров.

Категория: Космонавтика

 

Photo Widget своими руками

Автор: admin от 6-08-2014, 14:30, посмотрело: 392

Photo Widget своими руками

Привет, уважаемое хабрасообщество. Моя предыдущая статья про кастомный экран разблокировки получила мало отзывов в виде комментариев, но тем не менее сто человек сохранило её в избранных, тем самым вдохновив меня на написание ещё одной статьи на непопулярную тему.

Многим пользователям смартфонов Xperia нравится красивый трёхмерный стандартный виджет фотографий. С точки зрения терминологии андроид, это не AppWidget, а простой View, очень похожий на виджет. Его можно с большой натяжкой назвать «плагином» к стандартному лаунчеру Xperia Home, поэтому в списке виджетов других лаунчеров его нет. В этом посте я расскажу, как можно сделать похожий виджет.

Категория: Веб-разработка, Android

 

Встраиваем локальные уведомления

Автор: admin от 6-08-2014, 13:25, посмотрело: 706

Что самое ужасное в случае удаления приложения? Правильно, потеря связи с аудиторией и невозможность проинформировать о том, что у приложения сменился адрес прописки и имя пакета. Задачу решают Push уведомления, но это довольно хлопотно и не всегда удобно. А иногда и дорого.

Встраиваем локальные уведомления

Поэтому мы напишем свои, простые как барабан и надежные как танк — локальные push уведомления. Код получился универсальным, и в принципе, его можно использовать как альтернативу обычным «пушам», например для новостной рассылки о том, что вышла новая версия приложения или для клянчанья рейтинга, да для чего угодно.

функционал под катом

Категория: Веб-разработка, Android

 

Как не остаться голодным или безлимитный проход в столовую

Автор: admin от 6-08-2014, 13:25, посмотрело: 1396

Как не остаться голодным или безлимитный проход в столовую
Всем привет.

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

Пост будет о том, как удалось обойти лимит на одну порцию, установленную в столовой.
Как не остаться голодным?

Категория: Информационная безопасность

 

Первый релиз Visual Studio Tools for Unity 1.9 после покупки SyntaxTree

Автор: admin от 6-08-2014, 13:25, посмотрело: 589

Первый релиз Visual Studio Tools for Unity 1.9 после покупки SyntaxTree

Была новость о том, что Microsoft покупает SyntaxTree вместе с UnityVS. Всё гадал, когда же бесплатная версия появится.

И вот, не так давно вышел релиз сего удобного инструмента, естественно бесплатно, как и обещали в MS.

Visual Studio 2010 Tools for Unity
Visual Studio 2012 Tools for Unity
Visual Studio 2013 Tools for Unity

Категория: Компании » Microsoft

 
Назад Вперед