LINUX.ORG.RU

ANI, новый язык программирования

 ani,


0

0

Под лицензией GPL v3 выпущен anic, компилятор с экспериментального языка программирования ANI.

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

>>> Подробности

★★★★★

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

Ответ на: комментарий от shty

> проблема в том что непонятна целевая аудитория данного языка...

Это как раз не проблема. Тебе ж его не использовать, в конце концов. Языки нужны, чтоб из них идеи воровать.

Erlang или C\C++ в комбинации, к примеру, с тем же OpenMP

И то, и другое - совсем иные модели параллелизма.

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

Все языки ценны, и тот, кто упускает из виду хотя бы один, неизбежно что-то теряет.

это так, но кто изучает их все - теряет больше, ибо за деревьями можно и леса не увидеть :)

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

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

хм, а почему нет?

это если есть выбор (чаще то его нет) :)

по другим же критериям, таким как кодовая база и большое сообщество, это язык просто сливает, или не? :)

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

> проблема в том что непонятна целевая аудитория данного языка...

Это как раз не проблема. Тебе ж его не использовать, в конце концов. Языки нужны, чтоб из них идеи воровать.

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

> Erlang или C\C++ в комбинации, к примеру, с тем же OpenMP

И то, и другое - совсем иные модели параллелизма.

поясните суть разницы, пожалуйста

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

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

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

поясните суть разницы, пожалуйста

Erlang - message passing. OpenMP - shared memory ad-hoc parallelism, тогда как ANI - implicit parallelism. Совершенно разные подходы, для совершенно разных задач.

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

Blub paradox в действии. То, что тебе (из-за твоего низкого уровня развития как программиста) кажется «шизанутостью», для людей с более высоким уровнем развернётся в мощную и стройную концепцию.

Слы, умник, объясни тайную суть дважды описывать один и тот же тип в этом примере:

...
(declare (type (integer 0 *) k))  
  (labels ((expt0 (x k a) * 
             (declare (integer x a) (type (integer 0 *) k))
...

Скажешь, что ошиблись и это несущественно, потому что будет работать? Да фтопку такой язык, в котором аффторы ошибаются в первом же примитивном примере. Читабельность кода - одна из основ парадигмы конструирования языка. Если читабельности нету, то это очередной ублюдочный недоязык. У ассемблера и то читаельность выше.

xintrea
()

Да уж! Воистину миф о Вавилонском столпотворении воплощается в реальность руками таких вот велосипедостроителей. Скоро анекдот про обезьяну и студента превратится в притчу про обезьяну и программиста.

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

Ещё одно убогое малолетнее идиотище, абсолютно не понимающее, что такое computer science, да и вообще science. И уж тем более оно не понимает, что такое эволюция. Брысь отсюда, школота!

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

> это так, но кто изучает их все - теряет больше, ибо за деревьями можно и леса не увидеть :)

Чушь говоришь, полную чушь. Языков достаточно мало, и для того, чтобы увидеть общее, необходимо посмотреть на все.

Сам ты хотя бы пару десятков языков знаешь (на достаточном уровне, чтобы реализовать компиляторы для них)? Если нет - то не гадай, ты не знаешь, о чём говоришь.

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

Erlang - message passing. OpenMP - shared memory ad-hoc parallelism, тогда как ANI - implicit parallelism. Совершенно разные подходы, для совершенно разных задач.

так вроде ж всего 2 типа параллелизма существует:

1) shared state

2) message parsing

implicit parallelism - относится больше к поддержке параллелизма компилятором и может быть как первого так и второго типа

implicit parallelism is a characteristic of a programming language that allows a compiler or interpreter to automatically exploit the parallelism inherent to the computations expressed by some of the language's constructs

так что в erlang тоже implicit parallelism и одновременно message parsing

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

Детали подхода к реализации implicit parallelism, как минимум, заслуживают внимания. Не так уж много разработок на эту тему имеется.

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

> так вроде ж всего 2 типа параллелизма существует:

Намного больше. Одних только мат. моделей параллелизма - вагон, и Pi calculus далеко не единственный вариант.

относится больше к поддержке параллелизма компилятором и может быть как первого так и второго типа

На то он и implicit, что делати реализации не колышат

так что в erlang тоже implicit parallelism и одновременно message parsing

Какой такой в сраку parsing?!? Passing!

И никакой он не implicit, а очень даже explicit. И в Occam он тоже explicit.

anonymous
()

Объясните мне, чем это лучше чем D? И особенно, чем разрабатываемый ныне D2? Я не фанат D, но там люди и правда вложились. И люди солидные, умные, опытные. Проделали большую работу. Кто они, стоящие за этим поделием?

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

>Ещё одно убогое малолетнее идиотище, абсолютно не понимающее, что такое computer science...

computer science - это стадо полуграмотных обезьян-курсисток, не умеющих ничего, кроме коллекционирования языков программирования.

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

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

распространённых - да, но мы с Вами говорим больше про экспериментальные, не?

и, более того, я утверждаю что Вам не удастся подсчитать их число, максимум дать более или менее вероятную оценку :)

Сам ты хотя бы пару десятков языков знаешь (на достаточном уровне, чтобы реализовать компиляторы для них)? Если нет - то не гадай, ты не знаешь, о чём говоришь.

странный показатель какой-то Вы выбрали... к примеру реализовать адекватный (!) компилятор, к примеру, для С++ это не то же самое что для scheme... более того, писать компилятор и пользоваться им - две большие разницы, причём это справедливо в обоих направлениях

Вы вот сами подписались бы на создание (хотя бы) компилятора переднего плана для С++?

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

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

> так вроде ж всего 2 типа параллелизма существует:

Намного больше. Одних только мат. моделей параллелизма - вагон

ссылку на используемые модели, плиз... и не забываем что мы говорим про 2 модели реализации (с разделяемой памятью и обменом сообщениями), а не про алгоритмы параллелизации

Какой такой в сраку parsing?!? Passing!

ну зачем же так горячиться, просто когда писал не о том думал... всё таки работать надо помимо сушения вафлей на лоре :)

И никакой он не implicit, а очень даже explicit. И в Occam он тоже explicit.

ну и обоснуйте теперь :)

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

> распространённых - да, но мы с Вами говорим больше про экспериментальные, не?

Экспериментальных языков с оригинальными идеями очень мало. Большая часть экспериментальных языков - повторение старого на новый лад, и достаточно 10-15 минут на каждый из них, дабы это определить.

к примеру реализовать адекватный (!) компилятор, к примеру, для С++ это не то же самое что для scheme..

Я говорю о принципиальной способности это сделать, а не о желании.

Вы вот сами подписались бы на создание (хотя бы) компилятора переднего плана для С++?

Если бы вдруг очень надо было - то подписался бы. Сейчас, когда есть GLR и PEG, это намного проще чем раньше.

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

И не надо их писать. Я говорю об уровне понимания языка.

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

> ну и обоснуйте теперь :)

Чего обосновывать? Что параллелизм в Erlang явный? Это как бы следует из самой используемой модели message passing.

Неявный параллелизм - это если компилятор возьмёт конструкцию for(i=0;i<N;i++) count+=a[i]; и разобьёт её на несколько потоков автоматически.

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

>Выпендрился, быдлятинка? Абсолютно всё в IT - продукт computer science, школота ты сопливенькая.

Аминь! И Таненбаум наш Апостол!

ЗЫЖ И сбавь тон, а то укакаешся от напряжения.

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

Ай маладца! Регистрантишко-сцыкунчик, косящий под анонима. Спалился, зачем-же так резво меня в игнор записал?

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

Выметаться, так выметаться, нефиг в ж...попу орать :)

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

> Одних только мат. моделей параллелизма - вагон, и Pi calculus далеко не единственный вариант.

Какая мат модель параллелизма лежит в основе сабжа?

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

> Детали подхода к реализации implicit parallelism, как минимум, заслуживают внимания.

Как в этой реализации обеспечивается атомарность операций над несколькими переменными? В документации я про это ничего не нашел.

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

> Сам ты хотя бы пару десятков языков знаешь (на достаточном уровне, чтобы реализовать компиляторы для них)?

А ты? %)

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

>Выпендрился, быдлятинка? Абсолютно всё в IT - продукт computer science, школота ты сопливенькая.

Обоснуй. Информационные технологии гораздо больше CS. Последние включает в себя в основном языки и человеческий фактор при взаимодействии с компьютером. Касательно языков, то где продукт чистой CS, а не фичи для маркетинга, совместимости и т.д с небольшими элементами CS?

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

Уффф... Блажен кто верует.

Слово «нормальный» - определяет.

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

> Обоснуй. Информационные технологии гораздо больше CS. Последние включает в себя в основном языки и человеческий фактор при взаимодействии с компьютером.

Архитектура железа - это тоже CS. Любое программирование вообще - продукт CS. Все алгоритмы, структуры данных, и т.п.

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

>Детали подхода к реализации implicit parallelism, как минимум, заслуживают внимания.

Вот мастер говорить ни о чем. Ты тексты для программы Время не писал?

Какие конкретно детали заслуживают внимания?

К стати там не implicit parallelism. Там четко выделено понятие пайпа который может параллелится, и этот пайп определяется всегда explicitly.

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

А занимается он там фигней в данный момент меряясь реализацией философов в своем синтаксисе с паскалем.

Вот если бы он показал эффективную параллельную реализацию алгоритма/алгоритм определения что параллельная реализация не нужна для кода вида:

x = a + b
y = c + d
z = x + y

где первые две строки являясь пайпами в его подходе могут параллелится.

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

А обобщая данный пример для реализации эффективного микропараллелизма кода:

x = f(a)
y = g(b)
z = t(x,y)

ему надо иметь возможность оценивать время исполнения f и g. А на стадии компиляции он это сделает фигсмаслом. И следовательно для его идеи микрошедулинга ему бы копать в сторону JIT/HotSpot компиляции и Effect Systems, чтобы вычислять параллельные уастки на стадии компиляции, а в рантайме микропараллелить их основываясь на реальной статистике.

А пока там все базируется на необоснованной идее, что надо всего лишь запараллелить все что параллелится.

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

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

Виталий?

Какой виталий. Эстетический последователь. Виталий аргументы предьявлял - с ним можно было вести дискуссию. А этот только соплями брыжжет.

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

>>> Сам ты хотя бы пару десятков языков знаешь (на достаточном уровне, чтобы реализовать компиляторы для них)?

А ты? %)

Я - да. А что?

Ну, если в одно лицо писать нетривиальный компилятор, это несколько месяцев работы. Два десятка языков - это, скажем, 10 лет работы. Круто, что сказать. Можно узнать список языков, для которых ты написал компиляторы?

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

Какая мат модель параллелизма лежит в основе сабжа?

Я думаю аргументов мы не дождемся. Сабж не различает слова и аргументы.

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

Можно узнать список языков, для которых ты написал компиляторы?

Если мне не изменяют сенсоры он написал компилятор обжект паскаля в дотнет.

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

> Виталий?

Быдлоподделка. Пытается сымитировать ругань и ЧСВ, но не может сымитировать эрудицию.

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

> Претензии к синтаксису — признак быдло-monkey-кодера.

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

Хреновость синтаксиса - это степень семантического расстояния. Хренов тот программист кто выбирает язык с высоким семантическим расстоянием.

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

Я сказал, что надо знать язык на уровне «смогу написать компилятор, если захочу». Для этого не надо писать компилятор каждого встреченного языка, ага.

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

>>Можно узнать список языков, для которых ты написал компиляторы?

Если мне не изменяют сенсоры он написал компилятор обжект паскаля в дотнет.

Крутые у тебя сенсоры. А остальные 19 компиляторов откуда куда? %)

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

Крутые у тебя сенсоры.

Просто если мне не изменяют сенсоры он как-то выступал в треде по моно, и там ЧСВ прокачиавал хвастаясь этим.

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

> Там четко выделено понятие пайпа который может параллелится, и этот пайп определяется всегда explicitly.

Алё! Последовательность вычислений в любом императивном языке - тот же «пайп». Распараллелить её неявно как раз и есть интересная задача. Наличие такой конструкции, как пайп, решению задачи не очень помогает.

А пока там все базируется на необоснованной идее, что надо всего лишь запараллелить все что параллелится.

А чем плох подход? Даже с Task Parallel Library в .NET оно работает. В Occam оно работает. Почему тут не сработает?

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