Ada_Ru форум

Обсуждение языка Ада

Ada-2012 + Linux. Страница 5

Оставить новое сообщение

Сообщения

28.05.2013 0:42, "Артём Н." пишет:

24.05.2013 12:50, Dmitry A. Kazakov пишет:

По моим представлениям, тема nGL давно закрыта.

 

Да ладно вам.

http://www.mercurylang.org/

http://www.visual-prolog.com/

 

 

Если уж на то пошло, то JScriptLog. Prolog может быть полезен для ACL и разного рода конфигураций, но требуется версия для JavaScript, чтоб в веб–морде дублировать логику.

 

А ещё есть Datalog, Quantified Datalog, Golog, правда, я пока из этого ничего не применяю, так что не могу оценить применимость.

 

Может быть, Prolog можно было бы применять в качестве генератора кода на другом языке. Вот этим я бы мог заняться, а то в некоторых местах уже наболело, а m4 стрёмный. До тех пор, пока не начал генерить код ни на m4, ни на GPP, надо бы осмотреться, какие вообще есть варианты.

 

Писать программу, которая будет вызывать COM API, на старье, где нет даже

компилятора, никто не будет - это бессмысленно.

 

Ну так на этом старье может и echo не оказаться по такой логике.

 

Мне было бы интересно узнать (если, конечно, у вас есть время и желание это писать):

1. Что конкретно вы считаете плохим в данном классе систем (чем подробнее, тем

лучше)? И это относится ко всем сходным системам?

 

Хоть и не знаю, как это было в VMS, в посикс системах из–за разброда и шатаний в API и ABI набрал популярность autotools не столько даже в виде самих autotools, сколько в виде подхода. Компилируемое приложение привязывается к конфигурации на машине разработчика. Кросскомпиляция усложняется. Возьмите Watcom какой–нибудь. Из OS/2 можно собирать в DPMI и Win32, из Win32 — в DPMI и OS/2. Были бы библиотеки. Причём, библиотеки для компиляции не есть библиотеки на машине разработчика. Под Windows из–за проблем с манглингом, к счастью, даже при желании нельзя напрямую подключить DLL из System32. А в посикс системах с этим их autotools подходом лезть в /usr/include и /usr/lib — почему–то нормальное дело. Настолько нормальное, что так просто уже не выпутаться. Матрёшка вот тоже погрязла в этом.

 

Хуже того, если в Windows нужен всего лишь import library или как в Delphi, просто export имя–библиотеки, то в некоторых посикс системах, не во всех, нужна прямо сама библиотека, ну или образ библиотеки, чтоб была как настоящая. В Mac OS X есть утилита для разработчиков, которая чистит dylib от кода и данных, оставляя только таблицы импортов/экспортов как раз для таких целей. И если в OS/2 и Windows линкер посмотрел на import library и успокоился, посиксному линкеру надо не только настоящие so или dylib потрогать, но ещё и посмотреть, от чего они зависят, и эти зависимости тоже во что бы то ни стало найти. И в этот момент, если не те ключи использовать, линкер опять норовит сунуть своё немытое рыло в /usr/lib, чего–нибудь там лишнего найти, чтоб оно боком всплыло в последний момент на целевой машине. Поиск библиотек, которые непосредственно используются приложением и поиск библиотек для этих библиотек — это два разных процесса, управляемых разными ключами. Лучше всего использовать --sysroot, но в GNAT GPL 2012 встроенный ld собран без какого–то ключа, без которого --sysroot не работает. Вот в GNAT GPL 2012 gcc работает, а в ld — нет.

 

Кстати, типичная черта посикс систем: с одним ключом соберёшь, получишь одно, с другим соберёшь — получишь другое. Подобный подход был бы уместен, если нужно уместить библиотеки в микроконтроллёр, но большинство программ для посиксных ос всё же не для микроконтроллёров. А просто плохо развита слабая линковка. Закрытость OS сделало хорошее дело для Windows и особенно хорошее — для OS/2. В OS/2 это вылилось в создание SOM. Когда пропагандируют программы с открытыми исходниками, представляется, что это как с закрытыми исходниками, но только с открытыми, а на деле почему–то это совсем не так, и вовсе шлак. Шлак не потому что в открытые коды не хочется вкладываться, а из–за всей этой конфигурабельности в compile-time вместо конфигурабельности в run-time. Которая следствие разброда и шатаний, а уже во вторую очередь усугублённая открытостью.

 

-- If you want to get to the top, you have to start at the bottom

17.06.2013 23:45, "Артём Н." пишет:

28.05.2013 12:58, Dmitry A. Kazakov пишет:

Функция - не компонента. А разница в том, что читатель кода не должен

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

с чужим или даже своим кодом.

 

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

либо минимален (в сравнении с размером областей применения), либо крайне громоздким.

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

только средства языка, поэтому язык обрастёт невероятным количеством библиотек

функций и компонент, которые надо будет также изучать.

Во втором случае, и так понятно: вы C++ хорошо знаете?

Снимается ли барьер?

 

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

 

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

 

-- If you want to get to the top, you have to start at the bottom

15.05.2013 0:06, "Артём Н." пишет:

14.05.2013 20:32, Dmitry A. Kazakov пишет:

В остальном в нём присутствуют все необходимые современному

языку средства. Ну разве что сборка мусора отсутствует.

Т.к. она к таковым не разумеется принадлежит. Хотя, опять, для любителей

где-то валялся сборщик Бёмера для GNAT-a. Ссылку не сохранил, по-гуглите,

найдете.

А действительно нужен?

Мне не нужен. Но есть разные мнения. Я использую счетчики ссылок, если

объекты живут в динамических scope-ах.

Ну надеюсь, в родных библиотеках есть уже готовые классы, в которых всё это

реализовано?

 

Со подсчётом ссылок в Аде всё довольно печально. Вот это действительно слабое место.

 

Оно есть, оно реализуемо, этим удобно пользоваться до тех пор, пока не нужно изменять делать свои объекты в динамической памяти, добавлять или изменять методы, особенно, когда объекты в динамической памяти — наследники других объектных типов, и нужны обёртки и для абстрактных классов, и для классов наследников, и преобразования между ними.

 

Если использовать просто access, то все фичи языка Ада к вашим ногам: not null access, typecasting, вызов методов. Но нет подсчёта ссылок. Если же access обернуть в Controlled, то надо от каких–то фич отказаться, для каких–то сделать другой интерфейс доступа, а для вызова методов сделать прокси–методы. Дмитрий Казаков рассказывал о своём опыте применения generic для того, чтобы штамповать прокси для разветвлённой иерархии объектных типов, но это требует много RAM компилятора. Мне такой подход не понравился, пока что руками синхронизирую прокси, но вот хочу попробовать каким–нибудь макро–языком автоматизировать процесс генерации. gprbuild и GPS — расширяемые инструменты.

 

А ещё было бы здорово на somFree посмотреть, но это слишком круто пока. Для Ады, как для стороннего языка, нужно сделать свой emitter, но Emitter Framework есть только в IBM SOM, соответственно, либо генерить адские файлы из IDL только под Windows, используя IBM SOM, либо для somFree тоже реализовать Emitter Framework — всё это не сразу.

 

-- If you want to get to the top, you have to start at the bottom

14.05.2013 0:46, "Артём Н." пишет:

 

Отсюда конкретный вопрос звучит так: используете ли вы данный язык для написания

пользовательского ПО, которым, затем пользуются (например, системы для бухгалтеров)?

 

У нас частный предпроцессинг.

 

Потенциально другие разработки могут быть перенесены на Аду: сервер, отслеживающий состояние терминалов, сервер, отслеживающий платежи в чужие процессинги, которые идут в обход наших серверов. Начиналось всё с php версий, потом производительность стала страдать, а какие–то вещи в php было сложно сделать в принципе. Часть была переписана с php на C++, и я в одном таком переносе тоже поучаствовал. Сейчас упираемся в очередные ограничения. То, что на C++, было начато не мной. Автор очень угорал по всяким "A definite guide to...". Это честные демоны, с архитектурой accept()/fork(), с управлением start/stop из командной строки, но вот впиливать теперь пул SQL соединений в многопроцессный демон я пас.

 

А в Аде пул соединений у меня уже есть. И многие другие наработки поверх Матрёшки. В общем, server-side. Матрёшка, XMLAda, Ada Web Server и ещё по мелочи хеши вычислять и т. п.

 

-- If you want to get to the top, you have to start at the bottom

Привет, всем!

 

Около 15 лет пишу программы для posix систем, так что с интересом читаю вашу дискуссию...

Чтв 27 Июн 2013 02:20:37 +0400, Иван Левашев <[email protected]> написал:

Кстати, типичная черта посикс систем: с одним ключом соберёшь, получишь одно, с другим соберёшь — получишь другое.

 

Т.е. Вы считаете, что все ключи сборки и компилляции - это от лукавого? И две команды :

 

gcc main.c -o prog1

gcc -g main.c - о prog2

 

Должны в результате порождать prog1 == prog2 ? А если этого не происходит, то это свидетельствует о плохом качестве

компиллятора gcc конкретно и всех posox программ в общем ?

 

Интересная точка зрения....

 

Кстати, про то, должен ли линкер "совать нос" дальше списка импорта - экспорта..

У Вас никогда не бывало ситуации, когда ваш студент, у которого вы вели курсовой проект, тайком от Вас устанавливает на

Вашем Windows-компьютере невинную игрушку типа стрип-покера, после чего совершенно неожиданно рушится вся 1С бухгалтерия и главбух кричит, что вы ему похерили баланс и за это он Вас лишает з/п на три года вперёд.. Никогда такого не было ? Ну значит - Вы счастливый человек !

 

Сергей Ларионов

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

Мне кажется что данное обсуждение давно вышло за пределы темы и тем более назначения конференции.

 

 

Интересная точка зрения....

 

 

Так что не судите так строго.

С уважением, Сергей.

Email: ksiby@...

http://www.mediascan.by

 

From: уЕТЗЕК мБТЙПОПЧ

Sent: Thursday, June 27, 2013 6:08 PM

To: Иван Левашев

Cc: [email protected]

Subject: Re: [ada_ru] Re: Ada-2012 + L­inux

 

Привет, всем!

 

Около 15 лет пишу программы для posix систем, так что с интересом читаю вашу дискуссию...

 

Чтв 27 Июн 2013 02:20:37 +0400, Иван Левашев <mailto:octagram%40bluebottle.com> написал:

Кстати, типичная черта посикс систем: с одним ключом соберёшь, получишь одно, с другим соберёшь — получишь другое.

 

Т.е. Вы считаете, что все ключи сборки и компилляции - это от лукавого? И две команды :

 

gcc main.c -o prog1

gcc -g main.c - о prog2

 

Должны в результате порождать prog1 == prog2 ? А если этого не происходит, то это свидетельствует о плохом качестве

компиллятора gcc конкретно и всех posox программ в общем ?

 

Интересная точка зрения....

 

Кстати, про то, должен ли линкер "совать нос" дальше списка импорта - экспорта..

У Вас никогда не бывало ситуации, когда ваш студент, у которого вы вели курсовой проект, тайком от Вас устанавливает на

Вашем Windows-компьютере невинную игрушку типа стрип-покера, после чего совершенно неожиданно рушится вся 1С бухгалтерия и главбух кричит, что вы ему похерили баланс и за это он Вас лишает з/п на три года вперёд.. Никогда такого не было ? Ну значит - Вы счастливый человек !

 

Сергей Ларионов

27.06.2013 22:08, уЕТЗЕК мБТЙПОПЧ пишет:

Привет, всем!

 

Чтв 27 Июн 2013 02:20:37 +0400, Иван Левашев<octagram@...> написал:

 

Кстати, типичная черта посикс систем: с одним ключом соберёшь, получишь

одно, с другим соберёшь — получишь другое.

 

Т.е. Вы считаете, что все ключи сборки и компилляции - это от лукавого?

 

Я имел в виду ключи configure. ld нe понимает --sysroot, потому что в configure при сборке этот ключ не был указан, и теперь в рантайме, хоть тресни, --sysroot не поддерживается.

 

Кстати, про то, должен ли линкер "совать нос" дальше списка импорта -

экспорта..

 

У Вас никогда не бывало ситуации, когда ваш студент, у которого вы

вели курсовой проект, тайком от Вас устанавливает на Вашем

Windows-компьютере невинную игрушку типа стрип-покера, после чего

совершенно неожиданно рушится вся 1С бухгалтерия и главбух кричит,

что вы ему похерили баланс и за это он Вас лишает з/п на три года

вперёд.. Никогда такого не было ? Ну значит - Вы счастливый человек

!

 

Нет, не было. Было другое, .NET 1.1 программа не работала при установленном .NET 2.0, но мне как–то всё же подредактировать .config или .manifest попроще и побыстрее будет, чем пересобрать ld из GNAT GPL с нужным ключом.

 

-- If you want to get to the top, you have to start at the bottom

Новое сообщение:
< Страницы: 1 2 3 4 5

Чтобы оставить новое сообщение необходимо Зарегистрироваться и Войти