LINUX.ORG.RU

Вышла библиотека ABL 1.0


0

0

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

Библиотека обсуждалась в talks на ЛОР. Спасибо k_andy за ценные замечания, которые были явно использованы в этом выпуске.

Подробная документация на английском:

>>> HTML

>>> PDF

>>> Библиотека на freshmeat.net

★★★

Проверено: Shaman007 ()

Хорошая вещь, надо попробовать вместо GSList. Жаль, что без замыканий любая реализация списков в Си сильно теряет в выразительности и удобстве :(

uj2 ★★★
()

КОнечно здорово, но ссылка ...sky.org/rus/ab... разочаровала, ни одного слова на rus может быть есть и на великом пожалейте калек

fMad ★★★
()
Ответ на: комментарий от fMad

имхо, самопиар.

есть много готовых и более эффективных способов достижения того же самого.

например, linux/rbtree.h

anonymous
()

>>Planned Features
>>Add other high-order functions: like foldr/foldl (reduce?) and sort.


Мне даже трудно представить кому userspace ПО нужны списки без сортировки.

Второе, для прикладного ПО голый С - маразм. в С++ есть тормознутая, но достаточно удобная STL в которой "все придумано до нас".

Вобщем авторам безусловный респект, ибо лучше что то делать чем критиковать, это одноначно... Но чтобы сделать дейстельно полезную вещь - работы там непочатый край, и боюсь никто ее не окончит.




anonymous
()
Ответ на: комментарий от anonymous

ну, голый Си - не маразм, а необходимость (например, в оборонке система VxWorks aka ОСРВ).

но использовать такое самопиарное поделие в военных разработках - самоубийство.

anonymous
()
Ответ на: комментарий от ska

Вопрос - зачем оно надо? Сейчас достаточно много неплохих реалиазайи списков и другой хрени на С. Автору заняться что ли нечем? Пусть огород что ли соседке вскопает на зиму...

anonymous
()
Ответ на: комментарий от ska

> STL ne tormoznutyj, ego prosto nado pravil'no ispol'zovat'

+1

Я бы только сказал не "правильно использовать", а "грамотно использовать". Сила- в знаниях и умении ими распоряжатся, а с этим у народа проблемы- всяк кто освоил базовый синтаксис языка тут же наровит объявить себя экспертом в С++ и развиваться дальше не желает!

anonymous
()
Ответ на: комментарий от anonymous

>>Как вариант, можно имеено для этой функции запускать старую версию МГ..

Это второй вариант мировозрения после освоения первого шага. В том числе и считать себя умнее других.
Но есть еще и третий, в котором тормоза (и в ряде случае кривость) STL снова становятся актуальными ;)

anonymous
()
Ответ на: комментарий от anonymous

> Я бы только сказал не "правильно использовать", а "грамотно использовать".

А я бы сказал не "грамотно использовать", а "обладать хотя бы зачатками интеллекта чтобы просто использовать вменяемым образом".

Про "тормоза" курить до посинения:

http://rsdn.ru/article/devtools/CppPerformance.xml

AMDmi3
()

Си и списки с функциями высших порядков ? Бррр... Извращенцы.

Burbaka ★★
()

Список в си за пол часа пишется - зачем эта библиотека?

Pythagoras ★★
()
Ответ на: комментарий от Legioner

пердеж в лужу с вашей стороны

каждому языку своя ниша

только последний мудак будет писать полностью СУБД на java или на python

acefsm
()
Ответ на: комментарий от acefsm

Правильно, критичные части будут писать на C, некритичные на ЯВУ более высокого уровня (или на том же С). А при чём тут С++? :)

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> критичные части будут писать на C, некритичные на ЯВУ более высокого уровня (или на том же С)

Блестящая логика - "некритичные будут писать на языке более высокого или не более высокого уровня". Это у всех новообращенных явистов такое?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

> Нечто подобное я уже видел (не полное соотвествие, но мысль явно схожая).

За ссылку спасибо, еще раз внимательно посмотрю. Так и есть, подобных реализаций несколько. Эта не подходила из-за лиценцзии. Хотелось еще сделать так, чтобы можно было объявлять тип списка и получать набор функций с префиксом автоматом. Мне кажется иммено в этом главный прикол библиотеки :)

atoku ★★★
() автор топика
Ответ на: комментарий от uj2

> Жаль, что без замыканий любая реализация списков в Си сильно теряет в выразительности и удобстве :(

Да, еще лямбды не хватает!

atoku ★★★
() автор топика
Ответ на: комментарий от anonymous

> Мне даже трудно представить кому userspace ПО нужны списки без сортировки.

Сортировку добавить - не большая наука. На самом деле, если бы мне в основных приложениях нужна была бы сортировка, то и в этой маленькой библиотеке она бы обязательно была бы.

> Второе, для прикладного ПО голый С - маразм. в С++ есть тормознутая, но достаточно удобная STL

STL я хорошо знаю ;). Писал много лет на плюсах. Фишка была получить аналог СТЛ, не пачкая рук плюсами.

atoku ★★★
() автор топика
Ответ на: комментарий от satanic-mechanic

> Откройте для себя http://sglib.sourceforge.net/

Давно открыл. (1) Это другое, хотя подход и "модный" :). Посмотрите внимательнее. (2) Лицензия несовместима с GPL. Там требуется копирайт нотис.

atoku ★★★
() автор топика
Ответ на: комментарий от anonymous

> имхо, самопиар.

Да, конечно. Вообще-то я долго думал, надо ли в новостях о такой маленькой библиотеке. Даже спрашивал в толксах.

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

atoku ★★★
() автор топика
Ответ на: комментарий от anonymous

> Вопрос - зачем оно надо? Сейчас достаточно много неплохих реалиазайи списков и другой хрени на С. Автору заняться что ли нечем? Пусть огород что ли соседке вскопает на зиму...

Мне не подошла ни одна реализация, поэтому появилась эта.

atoku ★★★
() автор топика
Ответ на: комментарий от satanic-mechanic

> Откройте для себя http://sglib.sourceforge.net/

Неужели все-таки никто не попробовал ABL? Посмотрите хотя бы примитивные примеры в доках. Мне кажется, тут большая разница с любыми библиотеками, в том числе с sglib.

atoku ★★★
() автор топика
Ответ на: комментарий от ero-sennin

там как раз суть в том, чтобы не юзать ничего, кроме cpp/c++.

а так — я лично использую Lua или обработаный напильником tinySCHEME, и вполне доволен.

mirage
()
Ответ на: комментарий от mirage

> а что, кроковский intelib больше не рулит?

Рулит. В С++. ABL - ANSI C.

atoku ★★★
() автор топика
Ответ на: комментарий от atoku

2tailgunner: а фиг знает… я что, виноват, что тут форум кривой, и древовидная структура отсутствует как класс?

2atoku: тогда сорри. в лучших традициях — по ссылкам не ходил. я вообще анонимус в отсутствии души. спьяну зарегистрировался.

впрочем, всё равно не понимаю, нафига, если есть tinySCHEME. юзать списки в C-софте? а зачем? зачем тянуть костыль в макроассемблер? делаем низкоуровневые части на C и привинчиваем любой удобный LISP.

не понимаю. тупой, наверное…

mirage
()
Ответ на: комментарий от mirage

> впрочем, всё равно не понимаю, нафига ... юзать списки в C-софте

> не понимаю. тупой, наверное…

Ты сам это сказал. Списки постоянно нужны, чуть реже чем массивы.

Автору респект.

shumer
()
Ответ на: комментарий от atoku

>>Сортировку добавить - не большая наука.
Конечно. реализовать список еще более простая. тем не менее есть же желание "выностить" это библиотеки.

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


>>Фишка была получить аналог СТЛ, не пачкая рук плюсами.
Май би май би ;)
только до аналога как до луны еще, плюс ко всему синтаксис С не настолько удобен, а якобы удобные макросы при повсеместном использовании "убивают" понимание алгоритма который реализует код, квадратично частоте их использования. Посему палка о двух концах однако.



anonymous
()
Ответ на: комментарий от anonymous

>>Сортировку добавить - не большая наука.

>Конечно. реализовать список еще более простая. тем не менее есть же желание "выностить" это библиотеки.

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

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

Кстати о тестинге: вот бы потестировали побольше.

>только до аналога как до луны еще, плюс ко всему синтаксис С не настолько удобен, а якобы удобные макросы при повсеместном использовании "убивают" понимание алгоритма который реализует код, квадратично частоте их использования. Посему палка о двух концах однако.

Про макросы я не очень понял. В этой библиотеке макросы используются лишь для генерации имен функций. Функции же самые что ни на есть без макросов. Попробуйте скомпилировать примерчег (там есть несколько тестов) с флажком -E, чтобы увидеть во что разворачивается макрос. Только примените indent, а то все в одну строку разворачивается.

А на счет луны - это правильно. Но 1 все только начинается 2 цели другие: сделать удобный список, но предельно простой. То есть не заходить так далеко, когда и вправду надо просто брать какой-нибудь язык расширения. Когда еще есть резон не вылезать за пределы С, а просто добавить один заголовочный файл, и все.

atoku ★★★
() автор топика
Ответ на: комментарий от shumer

>> впрочем, всё равно не понимаю, нафига … юзать списки в C-софте

>> не понимаю. тупой, наверное…

>Ты сам это сказал. Списки постоянно нужны, чуть реже чем массивы.

>Автору респект.

кто спорит, что списки нужны? я только не понимаю, зачем их юзать непосредственно в си, да ещё и велосипед делать. как я упоминал выше — берём любой нормальный embeddable интерпретатор и строчим на нём. в си остаэтся сам интерпретатор, взаимодеиствие с ОС/БД/etc и некоторые очень критичные ко времени части.

собственно, имею в виду скорее, что «переворачиваем» понимание разработки: не «на си со встроеным интерпретатором», а «на интерпретаторе с кусочками си».

отсюда и недоумение. равное недоумение у меня бы вызвала библиотека для работы со списками на pure asm. в качестве развлечения — можно написть. если делать больше нечего.

mirage
()
Ответ на: комментарий от atoku

>STL я хорошо знаю ;). Писал много лет на плюсах. Фишка была получить аналог СТЛ, не пачкая рук плюсами.

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

acefsm
()
Ответ на: комментарий от Legioner

>Правильно, критичные части будут писать на C, некритичные на ЯВУ более высокого уровня (или на том же С). А при чём тут С++? :)

что мешает писать критичные части на С++?

писать объекты в стиле gtk маразм

+ в плюсах широкие возможности проверок еще на уровне компиляции

acefsm
()
Ответ на: комментарий от acefsm

>> STL я хорошо знаю ;). Писал много лет на плюсах. Фишка была получить аналог СТЛ, не пачкая рук плюсами.

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

Да да! Так и было! :) Ниасилил. Сейчас приходится из-за этого юзать всякие смешные погремушки вроде Питона или Лиспа.

atoku ★★★
() автор топика
Ответ на: комментарий от mirage

> кто спорит, что списки нужны? я только не понимаю, зачем их юзать непосредственно в си, да ещё и велосипед делать. как я упоминал выше — берём любой нормальный embeddable интерпретатор и строчим на нём. в си остаэтся сам интерпретатор, взаимодеиствие с ОС/БД/etc и некоторые очень критичные ко времени части.

Какое-то у тебя очень ограниченное представление о сфере применения Си. Мало куда можно/нужно встраивать какой-то левый интерпретатор.

Во вторых не вижу никакой проблемы в написании и использовании списков на Си. Подумаешь Бином Ньютона. из-за чего сыр-бор?

shumer
()
Ответ на: комментарий от shumer

>Какое-то у тебя очень ограниченное представление о сфере применения Си.

чем меньше — тем лучше. зачем всё писать на макроассемблере?

>не вижу никакой проблемы в написании и использовании списков на Си.

проблемы нет. есть некоторое удивление очередному велосипеду.

mirage
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.