Разрабатываю язык Динрус на основе D. (Ди по-русски). Как лучше разместить проект в сеть?
Несколько лет назад меня заинтересовал язык программирования Ди. И я провёл сравнение первой и второй его версий и решил, что первая намного проще, а большинство усложнений во второй версии излишне. Кроме того, для первой версии уже имелись в наличии набор библиотек и кодов, которые для второй нуждались в переработке и адаптации.
Первым продуктом моей работы стала общая библиотека Рулада, в которой я интегрировал два рантайма языка Ди - библиотеку Фобос и библиотеку Танго + наиболее важные из дополнительных библиотек первой версии Ди. Эту вещь можно скачать здесь . Скачав её, достаточно запустить файл .bat и подождать завершения компиляции. Появится папка build, в которой будут примеры с графическим интерфейсом, созданные с помощью этой библиотеки.
Рулада 1 - это был первый шаг. На нём я осознал, что Ди удобен в своей совместимости с языком Си тем, что можно создавать коды на русском языке, а при необходимости оборачивать их в английские функции, если эти коды требуют "интернационализации"...
Так началась работа над Динрус.
Сейчас этот проект дошёл до стадии, когда рантайм практически в рабочем состоянии, а библиотека std Ди и многие из функций языка Си и API Windows имеют своих русских "двойников".
Но чтобы Динрус стал полноценным языком программирования, его нужно дополнить всеми прочими средствами (работа с БД, Интернет, формы, графика и проч). Эти средства уже есть в Руладе. Их можно просто руссифицировать и скомпилировать как в статические, так и динамические формы...
В дальнейшем предполагается даже интеграция с ДотНет через COM, создание компилятора на самом Динрусе и т.д.
Как быть мне далее с этим проектом?
Вам там будут рады.
И еще рекомендация, для облегчения вашей тяжелой работы:
напишите программу, которая принимает на вход текстовый файл и
1) Разбивает его на слова по пробелам, арифметическим операциям, символам подчеркивания и заглавным буквам
2) Переводит каждое слово по словарю. Здесь можно применить консольные утилиты вроде sdcv
3) Не переведенные слова пытается перевести по списку сокращений вроде len->длин
4) Слова, отсутствующие в словаре и списке сокращений заменяет транслитом
5) Собирает все переведенные слова вместе, возвращая на место пробелы, арифметические операции и т.д.
С помощью такой программы можно будет мгновенно русифицировать ЛЮБОЙ язык программирования!
Одной командой можно будет привести в порядок сразу все системные библиотеки!
переключатель (вилка())
{
случай 0:
ожидаем4 (номер_процесса, ...);
сломаться;
...
по_умолчанию:
...
}
посмотрите altera-овские quartus и maxplus , и LabVIEW от National Instruments .
современная концепция - постепенный отказ от языка вообще .
Это призыв использовать декларативные XML-подобные структуры? Или троллинг?
Это призыв использовать декларативные XML-подобные структуры? Или троллинг?
Как понял об Альтере, это программирование микросхем ПЛИС с помощью указанных программных средств. То есть такие программы без микросхемы абсолютно непортируемы.... Хотя можно выкладывать проекты этих САПР куда-нить на файлсервер для того, чтобы "клиент" поместил на свою микросхему вашу программу...
V-tas Вам дали очень правильный ответ и знаете почему.
Здесь есть юридическая сторона, Вам нужно получить добро на Динрус у Walter Bright. Иначе есть прямой путь в суд.
Вот если Вы будите цитировать help из книги. Это тоже есть прямой путь в суд.
От себя добавлю не стоит D, что-бы так заниматься такой трахомой, есть много разновидности языков под каждую задачу.
Как понял об Альтере, это программирование микросхем ПЛИС с помощью указанных программных средств. То есть такие программы без микросхемы абсолютно непортируемы.... Хотя можно выкладывать проекты этих САПР куда-нить на файлсервер для того, чтобы "клиент" поместил на свою микросхему вашу программу...
мы о принципе программирования говорим . а уж что делает компилятор , программу для х86 или прошивку для ПЛИС , совершенно всё равно .
Как понял об Альтере, это программирование микросхем ПЛИС с помощью указанных программных средств. То есть такие программы без микросхемы абсолютно непортируемы.... Хотя можно выкладывать проекты этих САПР куда-нить на файлсервер для того, чтобы "клиент" поместил на свою микросхему вашу программу...
мы о принципе программирования говорим . а уж что делает компилятор , программу для х86 или прошивку для ПЛИС , совершенно всё равно .
Абсолютно ясно, что данный способ программирования малопродуктивен и ресурсоёмок, напоминает компонентное программирование в Дельфи и визуальное программирование в Hiasm'е (когда исходный код программы скрыт и недоступен для создателя программы)... С критикой Альтеры согласен: это лишний наворот над тем, что и без того работает безупречно и просто, - то есть язык ассемблера или низкоуровневого программирования. Достаточно было создать библиотеки и выложить к ним интерфейс, а программирование самих микросхем делать, например, с помощью такого простого языка программирования как Python или lua - 80% излишеств и гемороя отвалилось бы как минимум...
Как понял об Альтере, это программирование микросхем ПЛИС с помощью указанных программных средств. То есть такие программы без микросхемы абсолютно непортируемы.... Хотя можно выкладывать проекты этих САПР куда-нить на файлсервер для того, чтобы "клиент" поместил на свою микросхему вашу программу...
мы о принципе программирования говорим . а уж что делает компилятор , программу для х86 или прошивку для ПЛИС , совершенно всё равно .
Насчёт "функций-обёрток", которые в Динрус выглядят примерно так:
extern (Windows) BOOL SetCurrentDirectoryA(LPCSTR lpPathName);// Импортируем системную функцию
//Создаём рускоязычный аналог, для его экспорта из динамической библиотеки
export extern (C) бул УстановиТекущуюПапкуА(ткст путь)
{
return cast(бул) SetCurrentDirectoryA(cast(LPCSTR) путь);
}
Да, программа делает несколько "лишних" движений, совершая "джамп" от функции Динрус к системной, но таких движений не более трёх-четырёх, то есть большого ущерба для скорости от этого не наблюдается. (Выложить скриншот на отладчике?!)
Эта функция у нас находится в динамической библиотеке, к ней у нас остаётся интерфейс:
extern (C) бул УстановиТекущуюПапкуА(ткст путь);
Английский вариант нам, в принципе, более ненадобен, хотя есть модуль winapi, в котором её можно найти и использовать непосредственно...
V-tas Вам дали очень правильный ответ и знаете почему.
Здесь есть юридическая сторона, Вам нужно получить добро на Динрус у Walter Bright. Иначе есть прямой путь в суд.
Вот если Вы будите цитировать help из книги. Это тоже есть прямой путь в суд.
От себя добавлю не стоит D, что-бы так заниматься такой трахомой, есть много разновидности языков под каждую задачу.
Цитировать можно, если указывать цитату в тегах <blockquote>, давать указания на источник и т.д. Кроме того, можно просто "рерайтировать" текст.
https://sourceforge.net/p/rulada/wiki/Home/ и https://sourceforge.net/p/dinrus/wiki/Home/ - последний проект ночью выложил на SVN, но инсталятор, весом 78 мБ, сгрузить не удалось пока... Вообще-то, у меня более 10 ГБ материала, который так или иначе придётся переработать. Поэтому масштаб данного замысла Вам должен быть понятен... А вот по ссылке http://www.rs-b.nm.ru ничего нет!)))
С помощью этого кода можно скачать проект уже сейчас.
Абсолютно ясно, что данный способ программирования малопродуктивен и ресурсоёмок, напоминает компонентное программирование в Дельфи и визуальное программирование в Hiasm'е (когда исходный код программы скрыт и недоступен для создателя программы)... С критикой Альтеры согласен: это лишний наворот над тем, что и без того работает безупречно и просто, - то есть язык ассемблера или низкоуровневого программирования. Достаточно было создать библиотеки и выложить к ним интерфейс, а программирование самих микросхем делать, например, с помощью такого простого языка программирования как Python или lua - 80% излишеств и гемороя отвалилось бы как минимум...
слова некомпетентного человека .
языки для ПЛИС называются не "языками программирования" , а "языками описания аппаратуры" . их вполне хватает : VHDL , AHDL ,Verylog и прочие . они вполне себе Си-подобные языки . )
Абсолютно ясно, что данный способ программирования малопродуктивен и ресурсоёмок, напоминает компонентное программирование в Дельфи и визуальное программирование в Hiasm'е (когда исходный код программы скрыт и недоступен для создателя программы)... С критикой Альтеры согласен: это лишний наворот над тем, что и без того работает безупречно и просто, - то есть язык ассемблера или низкоуровневого программирования. Достаточно было создать библиотеки и выложить к ним интерфейс, а программирование самих микросхем делать, например, с помощью такого простого языка программирования как Python или lua - 80% излишеств и гемороя отвалилось бы как минимум...
слова некомпетентного человека .
языки для ПЛИС называются не "языками программирования" , а "языками описания аппаратуры" . их вполне хватает : VHDL , AHDL ,Verylog и прочие . они вполне себе Си-подобные языки . )
Каково их отношение к обсуждаемому? Динрус - это достаточно высокоуровневый язык, хотя он же и достаточно низкоуровневый: всё зависит от целей использования. Для программирования микросхем на нём можно написать весь этот высокоуровневый интерфейс, а далее использовать "языки описания аппаратуры" и проч. Либо "повыделываться", и написать замену этим языкам, о которых вы пишете...
Кстати, вы слишком часто цитируете "близлежащие" посты, это лишнее -- и так ясно.
ГЯР и как там второй... -- могли б и не пояснять, каждый пользователь Динрус обязан и так знать :)
//(под SetCurrentDirectoryA реально используется УстановиТекущуюПапкуА)
extern (C) бул УстановиТекущуюПапкуА(ткст путь);
alias УстановиТекущуюПапкуА SetCurrentDirectoryA;
Фактически можно было сделать и наоборот:
//(под УстановиТекущуюПапкуА реально используется SetCurrentDirectoryA )
extern (Windows) BOOL SetCurrentDirectoryA(LPCSTR lpPathName);
alias SetCurrentDirectoryA УстановиТекущуюПапкуА;
В общем, под алиасом (псевдонимом) происходит использование первой функции (или типа) под именем второй. Компилятор принимает алиас на время компиляции; но чтобы функция стала "реальной", нужно делать обёртку; псевдоним после компиляции нигде реально не фиксируется - это "пользовательский тип" и не более.
typedef из Си в Ди является более серьёзным объявлением типа, чем alias; он действует, по-моему, и после компиляции.
В Динрус модуль sys.func (на первом этапе) содержит импорты функций-обёрток WinAPI, сейчас это выглядит так:
/**
SetCurrentDirectoryA
*/
бул УстановиТекущуюПапкуА(ткст путь);
/**
SetCurrentDirectoryW
*/
бул УстановиТекущуюПапку(шткст путь);
В дальнейшем этот модуль будет импортировать модули из пакета sys.inc, в котором будет располагаться руссификация файлов-вложений ("инклюдов") из masm32. Реально таким образом выполнено только "пол-модуля" sys.inc.kernel32 (!)
Здесь ещё есть сомнение - делать импорт статически или динамически...
Вот ссылка на скачку самого минимального набора - импорт находится в папке imp/dinrus (12 мБ).
/**
CreateFileA
*/
ук СоздайФайлА(in ткст фимя, ППраваДоступа доступ, ПСовмИспФайла режСовмест,
АТРИБУТЫ_БЕЗОПАСНОСТИ *безАтры, ПРежСоздФайла диспозицияСозд, ПФайл фФайлАтр, ук файлШаблон);
ПСовмИспФайла, ППраваДоступа, ПФайл, ПРежСоздФайла - это перечни. Чтобы понять, что нужно использовать именно их, вам не придётся ходить в MSDN (!) - найдите их в модуле sys.consts и используйте...
См. выше:
/**
SetCurrentDirectoryW
*/
бул УстановиТекущуюПапку(шткст путь);
Ищите SetCurrentDirectoryW
Еще момент. Если вы станете работать с откомпилированным кодом (что не редкость для системщика), то символы будут созвучны симантике api, хоть и декорированной, а не псевдонимов. Получаем дополнительное неудобство от русификации. Реально получается не русификация а неудобная двуязычность.
SetCurrentDirectoryW
*/
бул УстановиТекущуюПапку(шткст путь);
Еще момент. Если вы станете работать с откомпилированным кодом (что не редкость для системщика), то символы будут созвучны симантике api, хоть и декорированной, а не псевдонимов. Получаем дополнительное неудобство от русификации. Реально получается не русификация а неудобная двуязычность.
Реально. В отладчиках и др. программах, не работающих с UTF-8? видится
D3sys7structs14Р’РђР РРђРќРў5opDivMFS3sys7structs14Р’РђР РРђРќРўZS3sys7structs14Р’РђР РРђРќРў
После перекодировки в Notepad++ получаем
D3sys7structs14ВАРИАНТ5opDivMFS3sys7structs14ВАРИАНТZS3sys7structs14ВАРИАНТ
ВЫВОД: ОТЛАДЧИКИ УСТАРЕЛИ!)))
ВАРИАНТ результат;
ДелиВар(*this, тот, результат);
return результат;
}
Каково их отношение к обсуждаемому? Динрус - это достаточно высокоуровневый язык, хотя он же и достаточно низкоуровневый: всё зависит от целей использования. Для программирования микросхем на нём можно написать весь этот высокоуровневый интерфейс, а далее использовать "языки описания аппаратуры" и проч. Либо "повыделываться", и написать замену этим языкам, о которых вы пишете...
вот вы и выдали своё непонимание различий между языками программирования и языками описания аппаратуры .
-- Generated by MyHDL 0.8dev
-- Date: Fri Dec 21 15:02:39 2012
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.numeric_std.all;
use std.textio.all;
use work.pck_myhdl_08.all;
entity inc_comb is
port (
nextCount: out unsigned(7 downto 0);
count: in unsigned(7 downto 0)
);
end entity inc_comb;
architecture MyHDL of inc_comb is
begin
nextCount <= (count + 1) mod 256;
end architecture MyHDL;
и графический вид удобнее .
и новые микрухи производителем поддерживаются лучше и всяко быстрее чем питоном .
итого у вас одни недостатки и никаких достоинств .
зы:а отличия языка программирования от языка описания устройств вы всё равно не знаете . )
Прочтите, не знаю, хотя бы Себеста "Основые концепции языков программирования", чтобы избавиться от ереси, которую здесь по написали.
ваше мнение против моего . интересно , что же я выберу ?.. :)
Какой компилятор у вашего языка (конечный)?
компилятор фирмы производителя микросхем вестимо . :)
Сколько нагрузки на систему при вашем автоматизированном программировании?
нисколько . обычный графический редактор . жрёт ресурсов чуть больше блокнота . )
Сколько памяти у компа отнимает процесс?
какая мне разница ? я на работе работаю , а не в игрушки режусь . ) пусть хоть всё память сожрёт , главное - результат . )
Сколько на жёстком диске места отнимает вся эта петрушка?!
во первых , какая мне разница ? во вторых квартус занимает пару сотен метров , что по сравнению с билдером и дельфи не очень много . )
Сможете ли вы самостоятельно совершенствовать свои инструменты?
зачем ? что значит "совершенствовать" ?
Знаете ли вы исходный код компилятора?
зачем мне его знать ?
А у меня все библиотеки свои, кроме системных. И я над ними господин!)))
что предпочитаете ? - медаль "повелитель галактики" или орден "чёрный властелин" ? :)
дорогой Ви-тас , вы сюда пришли искать поддержки , это понятно . вы столько труда вложили , что жалко бросать . но :
а)это бесперспективно .
б)никому , кроме таких же энтузиастов как вы , не нужно .
в)в ответ на критику вы пытаетесь что-то непонятное доказать , хотя вроде бы за критикой и пришли .