Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Разрабатываю язык Динрус на основе D. (Ди по-русски). Как лучше разместить проект в сеть?

68K
23 сентября 2013 года
V-tas
58 / / 24.12.2012
Здравствуйте!

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

Первым продуктом моей работы стала общая библиотека Рулада, в которой я интегрировал два рантайма языка Ди - библиотеку Фобос и библиотеку Танго + наиболее важные из дополнительных библиотек первой версии Ди. Эту вещь можно скачать здесь . Скачав её, достаточно запустить файл .bat и подождать завершения компиляции. Появится папка build, в которой будут примеры с графическим интерфейсом, созданные с помощью этой библиотеки.

Рулада 1 - это был первый шаг. На нём я осознал, что Ди удобен в своей совместимости с языком Си тем, что можно создавать коды на русском языке, а при необходимости оборачивать их в английские функции, если эти коды требуют "интернационализации"...

Так началась работа над Динрус.

Сейчас этот проект дошёл до стадии, когда рантайм практически в рабочем состоянии, а библиотека std Ди и многие из функций языка Си и API Windows имеют своих русских "двойников".

Но чтобы Динрус стал полноценным языком программирования, его нужно дополнить всеми прочими средствами (работа с БД, Интернет, формы, графика и проч). Эти средства уже есть в Руладе. Их можно просто руссифицировать и скомпилировать как в статические, так и динамические формы...

В дальнейшем предполагается даже интеграция с ДотНет через COM, создание компилятора на самом Динрусе и т.д.

Как быть мне далее с этим проектом?
Страницы:
414
23 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Цитата:
Как быть мне далее с этим проектом?


Выбросить и заняться чем-нибудь более полезным.

260
24 сентября 2013 года
Ramon
1.1K / / 16.08.2003
А можно старославаянский синтаксис? Русский дюже испортился с тех пор.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Ничего другого и не ожидал.
394
24 сентября 2013 года
MegaMozg
317 / / 18.03.2006
Цитата: V-tas
Ничего другого и не ожидал.


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

446
24 сентября 2013 года
Meander
487 / / 04.09.2011
На самом деле, обволакивая синтаксис D в русскую оболочку (в любую оболочку), вы сужаете круг потенциальных пользователей языка. В данном случае вы сузили этот круг до русскоговорящих дошкольников, школьников начальных классов и неискушенных людей старше лет 50. Т.е. этим людям потребуется изучать азы языка, но по-крайней мере не отвлекаясь на непонятные английские слова. Вывод: область применения дет. сады, дошкольные подготовительные группы, дома престарелых.

Вот если бы Вы разработали оболочку над javascript для работы с файловой системой и интерпретатор на движке SpiderMonkey, так чтобы язык перестал быть привязан к браузеру. Возможно, даже это было бы более востребовано для каких либо нужд.

Или сделали плагин для поисковых систем поиска музыки по голосу (ну намычал мотив в микрофон, а поисковик выдал ссылки на наиболее подходящие композиции). Это тоже полезно.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Ответ на вопрос ЗАЧЕМ дан разработчиками языка Ди: для системного программирования, не уступающего языку Си++. Кроме того, он значительно более функционален, чем, например, тот же Delphi или Си. Этот язык - что вполне очевидно - необходим русским программистам, как воздух.

Более того, в рантайм этого языка можно ввести все необходимые средства для обеспечения безопасности кодов, для контроля над общей языковой средой (как следует выразиться в подражание CLR), то бишь создать средства, которые без всяких антивирусных программ будут обеспечивать функции безопасности написанных на этом языке программ.

Подвязка к любым англоязычным DLL выполняется без особой трудности, если в них есть функции, экспортируемые по правилам языка Си. Ну, и проч...
446
24 сентября 2013 года
Meander
487 / / 04.09.2011
Цитата: V-tas
Этот язык - что вполне очевидно - необходим русским программистам, как воздух.


Вы уверены, что русские программисты - это те, кто программирует на русском языке?

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Из Динрус можно подвязываться не только к javascript, но и к любому другому скриптовому языку.
Простой пример подвязки к WSO через VBS:

module vbs.test;
import vbs.wso.all;


проц ф1()
{
ЦветоДиалог цд = объЦветоДиалог;
цд.выполнить();

Форма ф1 = объФорма("TestForm");
ф1.ширинаКлиента(900);
ф1.высотаКлиента(700);
ф1.поЦентру();
ф1.текст("Проверка работы кода 2");
ф1.пиктограмма();
ф1.покажись();

}

void main()
{
инитВСО();
ф1();
закройВСО();

}

Картинку с открывшимся окошком при запуске экзешника могу выслать отдельно...
446
24 сентября 2013 года
Meander
487 / / 04.09.2011
С другой стороны, например китайских программистов больше чем русских. Китайцам трудно учить английский и русский. Так что если сделать синтаксис на иероглифах, китайцы воспримут D на ура.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: Meander
С другой стороны, например китайских программистов больше чем русских. Китайцам трудно учить английский и русский. Так что если сделать синтаксис на иероглифах, китайцы воспримут D на ура.



Фик с ними, китайцами. Пусть сами позаботятся о своих удобствах.

Для интерфейса - объясняю подробнее - можно использовать английский. Если Вам нужно, чтобы вашей DLL воспользовались иностранцы. Основной же код можно писать по- руски.

export extern(C) проц showColorDialog()
{
ЦветоДиалог цд = объЦветоДиалог;
цд.выполнить();
}

В интерфейс выводим extern(C) void showColorDialog(); Всё.

394
24 сентября 2013 года
MegaMozg
317 / / 18.03.2006
Цитата: V-tas
Ответ на вопрос ЗАЧЕМ дан разработчиками языка Ди: ...



я не спрашивал: "зачем нужен язык D?"
я спрашивал "зачем нужен Динрус?", и зачем

Цитата: V-tas
Основной же код можно писать по- руски.


?

446
24 сентября 2013 года
Meander
487 / / 04.09.2011
Я понимаю, что Вы восхищены языком D. Но, даже, если бы на этом форуме пять человек сказали вау, круто, это не значит, что язык крутой. То что си или си++ круто, это не свойство языка, это констатация факта, что миллионы людей находят их пригодными.
Сделайте страницу на википедии, выложите наработки на sourceforge, сделайте сайт разработки и статистика использования сама покажет скольким людям это надо и зачем.
Какова скорость выполнения тестовых общепринятых алгоритмов? Как решается проблема кроссплатформенности? На сколько эффективна работа со сложными структурами данных? Сколько длится компиляция? Каков размер исполняемых файлов? Доступность и наличие ИСР с подсказками, подсветками, завершениями кода, графическими конструкторами форм? Это важно, а не идентификаторы на кириллице или прочем региональном шрифте.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: Meander

Сделайте страницу на википедии, выложите наработки на sourceforge, сделайте сайт разработки и статистика использования сама покажет скольким людям это надо и зачем.
Какова скорость выполнения тестовых общепринятых алгоритмов? Как решается проблема кроссплатформенности? На сколько эффективна работа со сложными структурами данных? Сколько длится компиляция? Каков размер исполняемых файлов? Доступность и наличие ИСР с подсказками, подсветками, завершениями кода, графическими конструкторами форм? Это важно, а не идентификаторы на кириллице или прочем региональном шрифте.



На СорсФордже пока есть Рулада - гибрид Tango-Phobos'а. Вы подняли, наконец-то, те самые вопросы. Азис Кёксаль практически написал код компилятора на самом Ди, его аналог есть уже на русском, Чего там не хватает? Во первых, нужно не только ввести русские ключевые слова, но самое важное - перевести промежуточные файлы объектов в COFF для обеспечения совместимости с Visual C++. Задач много. Поэтому для дальнейшей разработки нужна целая совокупность проектов, решающих самые важные задачи, начиная с компилятора...

Соответственно, такая задача под силу лишь команде...

Я присматриваюсь ко многим открытым кодам, UPP, QT и т.д., поскольку самое важное - создать совершенный рантайм языка. В ближайшее время выложу проект рядом с Руладой, представление о которой можно получить нажав ссылку "здесь" в тексте поста. В ней всего десяток библиотек, в том числе и интерфейс Винды в одном флаконе. По сути, программа скомпилируется, если просто открыть исходник компилятором... Хотя есть некоторые нюансы пользования им. В Руладе присутствует масса недостатков... Это поскольку после интеграции двух библиотек я начал работать над рантаймом Динрус, так и не доделав вторую версию Рулады. Я решил оставить её как вспомогательное средство. Все пакеты из Рулады можно преобразовать в DLL. и они будут работоспособны в Динрусе. Так, Dinrus.Arc.dll уже функциональна вполне. Рантайм помещён в Dinrus.Base.dll. Вообще-то, вместо OpenGL32 и др. будет Dinrus.OpenGl.dll, Dinrus.Glut.dll и Dinrus.Glu.dll, скомпилированные из исходников Mesa. Управление над ними будет через Dinrus.Mesa.dll

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

414
24 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Чем D лучше Lisp?
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
446
24 сентября 2013 года
Meander
487 / / 04.09.2011
Вот это все, что Вы сказали, где подробный мануал на русском (и английском) языке в том архиве, который я скачал? Если Вы продвигаете свой труд, поинтересуйтесь как это делается. Учитывая 8 скачиваний на sourceforge, проблема не в том что делать с проектом, а как его популяризировать. На это, мне кажется, стоит обратить внимание.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: CassandraDied
Чем D лучше Lisp?



Не берусь сравнивать.

414
24 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Цитата: V-tas
Цитата: CassandraDied
Чем D лучше Lisp?



Не берусь сравнивать.


Хорошо. Чем D лучше Python?

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: Meander
Вот это все, что Вы сказали, где подробный мануал на русском (и английском) языке в том архиве, который я скачал? Если Вы продвигаете свой труд, поинтересуйтесь как это делается. Учитывая 8 скачиваний на sourceforge, проблема не в том что делать с проектом, а как его популяризировать. На это, мне кажется, стоит обратить внимание.



Проблема с переводом справки языка Ди была. Теперь появился перевод книги Андрея Александреску "Язык программирования D", т.е. мне не придётся уделять много времени для полного перевода всей справки, что радует. Достаточно подставить вместо ангоязычных кодов и типов русские аналоги. В целом грамматика полностью совпадает. Ключевые слова остаются на английском, теми же что и в Ди. Ссылку на Александреску можно прогуглить.

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Ресурс для Динрус пока мал. Сайт условно называемый V-tas@ArtStudio , мой сайт, пока также неполноценен, так как на всё одного человека МАЛОВАСТЕНЬКО БУДЕТ!(((( Там есть небольшая страничка под Динрус, не более. Вообще-то проект только "запускается"...
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: CassandraDied
Цитата: V-tas
Цитата: CassandraDied
Чем D лучше Lisp?



Не берусь сравнивать.


Хорошо. Чем D лучше Python?



Динрус компилируемый, а не скриптовый язык. Он подходит для того, чтобы создавать для первого библиотеки с расширением pyd, то есть фактически то, на чём тот самый Питон функционирует вообще...

326
24 сентября 2013 года
sadovoya
757 / / 19.11.2005
Вам не кажется, что выбор языков и так велик? Есть куча си++ образных языков, переход с одного на другой не сложен. Скорей выучат несколько широкоприменяемых, чем D. Если бы он нес новую парадигму, шансы были бы.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: sadovoya
Вам не кажется, что выбор языков и так велик? Есть куча си++ образных языков, переход с одного на другой не сложен. Скорей выучат несколько широкоприменяемых, чем D. Если бы он нес новую парадигму, шансы были бы.



Проанализировав массу исходников на английском, в том числе для Python'а, я понял следующее: если у меня есть средства для подвязке к системным библиотекам и есть возможность писать на родном языке, то любые решения я смогу создать, не пудря себе голову двумя ячейками памяти - английской (первичный ключ) и русскоязычной(перевод английской в уме)... Голова ТРЕСНЕТ...

Конечно, это сложновато, но любой код можно переписать под Динрус и результат его работы будет таким же, как и в варианте для Си (++)... Минус забивание ячеек памяти МОЗГА англоязыкой чепухой.

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Кстати, китайцы вполне могут сделать из Ди нечто подобное. Ди можно писать в АНЗИ только по-английски (АСКИ), либо на любом другом языке (если изменить функции по форматированию и обработке текста) в UTF-8. Поэтому я пишу коды в Notepad++ с кодировкой utf-8, выставленной по умолчанию. Когда же пользуюсь отладчиком (PeBrowseDbg является из них наиболее профессиональным, на мой взгляд) приходится копировать текст из отладчика в Блокнот++ в кодировке АНЗИ, а затем преобразовывать в утф, чтобы "кракозябры" стали понятными. Увы, все отладчики не любят УТФ-8!)))) (Устарели)
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: V-tas
Из Динрус можно подвязываться не только к javascript, но и к любому другому скриптовому языку.
Простой пример подвязки к WSO через VBS:

module vbs.test;
import vbs.wso.all;


проц ф1()
{
ЦветоДиалог цд = объЦветоДиалог;
цд.выполнить();

Форма ф1 = объФорма("TestForm");
ф1.ширинаКлиента(900);
ф1.высотаКлиента(700);
ф1.поЦентру();
ф1.текст("Проверка работы кода 2");
ф1.пиктограмма();
ф1.покажись();

}

void main()
{
инитВСО();
ф1();
закройВСО();

}

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



Вот поднаготная этой программы:

module vbs.wso.form;

import vbs.wso.common, vbs.wso.wso, stdrus;

class Форма
{
private:
ткст имя = "f";
бул икоДинрус = нет;

public:
this(ткст перск= "f")
{
Перск форма;
форма.уст(перск, "wso.CreateForm(0,0,0,0)");
this.имя = перск;
}

this(цел а, цел б, цел в ,цел г){
Перск форма;
форма.уст(имя, фм("wso.CreateForm(%s,%s,$s,$s)", а, б, в, г));
}

~this(){if(икоДинрус) удалиФайл("dinrus.ico");}

проц заголовок(сбул зн){скрипт(имя~`.Caption = `~зн);}
//Надпись
проц текст(ткст зн){скрипт(имя~`.Text = "`~зн~`"`);}
//Наличие разворачивающей кнопки
проц боксРазвернуть(сбул зн){скрипт(имя~`.MaximizeBox = `~зн);}
//Пиктограмка
проц пиктограмма(ткст ик){скрипт(имя~`.Icon = "`~ик~`"`);}
проц пиктограмма()
{
пиктограммаДинрус();
икоДинрус = да;
скрипт(имя~`.Icon = "`~"dinrus.ico"~`"`);
}
//Размер
проц ширинаКлиента(цел зн){скрипт(фм(имя~`.ClientWidth =`~stdrus.вТкст(зн)));}
проц высотаКлиента(цел зн){скрипт(фм(имя~`.ClientHeight =`~stdrus.вТкст(зн)));}
проц размерИзменяем(сбул зн){скрипт(имя~`.SizeGrip = `~зн);}

//Положение на экране
проц поЦентру(){скрипт(имя~`.CenterControl()`);}

//Действия
проц покажись(){скрипт(имя~`.Show()`);}
проц модально(){скрипт(имя~`.ShowModal()`);}
// Метод показывает форму на экране, запрещая доступ к остальным окнам программы пока эта форма не будет закрыта.
проц свернись(){скрипт(имя~`.Minimize()`);}
// Метод минимизирует форму.
проц развернись(){скрипт(имя~`.Maximize()`);}
// Метод разворачивает форму во весь экран.
проц восстановись(){скрипт(имя~`.Restore()`);}
// Метод развертывает форму обратно из минимизированного состояния.
проц закройся(){скрипт(имя~`.Close()`);}
// Метод закрывает форму.
}

414
24 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Импорты тоже можно было бы сделать на русском языке.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: V-tas
Из Динрус можно подвязываться не только к javascript, но и к любому другому скриптовому языку.
Простой пример подвязки к WSO через VBS:

module vbs.test;
import vbs.wso.all;


проц ф1()
{
ЦветоДиалог цд = объЦветоДиалог;
цд.выполнить();

Форма ф1 = объФорма("TestForm");
ф1.ширинаКлиента(900);
ф1.высотаКлиента(700);
ф1.поЦентру();
ф1.текст("Проверка работы кода 2");
ф1.пиктограмма();
ф1.покажись();

}

void main()
{
инитВСО();
ф1();
закройВСО();

}

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



Вот результат выполнения экзешника test:

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: CassandraDied
Импорты тоже можно было бы сделать на русском языке.


Увы... пробовал называть файлы по-русски, что соответствеенно означало бы и русское название модулей.
Подвёл компилятор, DMD 1.6, который напрочь не желает иметь дело с файлами, проименоваными не по-англицки.

В его сишном коде следует OpenFileA заменить на OpenFileW.

Но вначале надо найти правильный код компилятора, так как не все они пригодны для Динрус. А кода для той версии, с которой он работает у меня нет (или в сети нет). Проблема обозначена так: НУЖНО ДО - ПИСАТЬ КОМПИЛЯТОР... Исходники есть, но не полные, не готовые...

414
24 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Ну конечно, виноват компилятор.
Цитата:
void main()


В этом тоже он виноват?

68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: CassandraDied
Ну конечно, виноват компилятор.
Цитата:
void main()


В этом тоже он виноват?



Напишите проц main !)))) Вот текст с кодом, который отвечает за запуск главной функции.

module dmain2;
import gc, dinrus, win, runtime;

//debug=НА_КОНСОЛЬ;
extern (C)
{
бул смДобавьКорень( ук p );
бул смДобавьПространство( ук p, т_мера разм );
проц максПриоритетПроцессу();
ткст[] ртПолучиАрги(цел аргчло, сим **аргткст);
бул рт_вЗадержке();
бул ртПущен();
бул ртОстановлен();
бул ртСтарт(ПередВходом передвхо = пусто, ОбработчикИсключения дг = пусто);
бул ртСтоп(ПередВыходом передвых = пусто, ОбработчикИсключения дг = пусто );
проц ртСоздайОбработчикСледа( Следопыт h );
Исключение.ИнфОСледе ртСоздайКонтекстСледа( ук ptr );
проц ртУстановиОбработчикСборки(ОбработчикСборки h);
}

static т_см _гсм;
static Рантайм рт;

extern (C) ИнфОМодуле[] _moduleinfo_array;

static экз g_hInst;

extern(C) ук указательНаИспМодуль(){return cast(ук) g_hInst;}
/////////////////////////////////////////////
void ассертОбр( ткст файл = __FILE__, т_мера строка =__LINE__, ткст сооб = null )
{
throw new ПроверОшиб(сооб, файл, строка );
}

проц ошиб()
{
бцел кодош = ДайПоследнююОшибку();
throw new Исключение (_текстСисОшибки(кодош));
}

/***********************************
* Функция main() языка Динрус, предоставляемая программой пользователя
*/
цел main(ткст[] арги);

/***********************************
* Замещает функцию main() языка Си.
* Its purpose is to wrap the call to the D main()
* function и catch any unhandled exceptions.
*/

extern (C) int main(int аргчло, сим **аргткст)
{
цел результат;
бцел ин;

проц пробуйВыполнить(проц delegate() дг)
{
try
{
дг();
}
catch (Исключение e)
{
результат = НЕУДАЧНЫЙ_ВЫХОД ;
e.выведи; смСобери(); ртСтоп();
}
}

проц пускГлавной()
{
результат = main(ртПолучиАрги(аргчло, аргткст));
}

проц передВыходом()
{
_гсм.полныйСборБезСтэка();
_гсм.Дтор();
}

проц передВходом()
{
try
{
debug(НА_КОНСОЛЬ) _скажинс("Вход в ртМодКонстр");
_гсм = new СМ();//cast(т_см) дайУкНаСМ();
debug(НА_КОНСОЛЬ) _скажинс("Создан СМ экзешника");
_гсм.сканируйСтатДан(_гсм);
нить_прикрепиЭту();
_minit();
рт.интегрируй(_moduleinfo_array);
foreach( r; _гсм.обходКорня )
{
смДобавьКорень( r );
debug(НА_КОНСОЛЬ) _скажинс("Добавление корня");
}
foreach( r; _гсм.обходПространства )
{
смДобавьПространство( r.Низ, r.Верх - r.Низ );
debug(НА_КОНСОЛЬ) _скажинс("Добавление пространства");
}
/+_гсм = cast(т_см) дайУкНаСМ();+/ //Объединить с основным?
}
catch(Исключение и){delete и; debug(НА_КОНСОЛЬ) _скажинс("Исключение в ртМодКонстр");}
}

проц обрИскл(Исключение и)
{
throw new Исключение("Проблема с пуском\\остановкой\nрантайма в функции (ртСтарт\\ртСтоп):\n"~и.сооб, и.файл, и.строка, и.следщ, и.инфо);
}

проц пускВсех()
{
g_hInst = ДайДескрМодуляА(пусто);
максПриоритетПроцессу();
ртСтарт(&передВходом, &обрИскл );
устПроверОбр(&ассертОбр);
пробуйВыполнить(&пускГлавной);
ртСтоп();//&передВыходом, &обрИскл);
}

пробуйВыполнить(&пускВсех);

return результат;
}

Если у вас получится сделать его лучше, попробуйте.

Особо обратите внимание на строки

* Функция main() языка Динрус, предоставляемая программой пользователя
*/
цел main(ткст[] арги);

Выходит, что компилятор ждёт именно main, а не пуск, старт или поехали!)))

414
24 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Не, я лучше поспать пойду.
68K
24 сентября 2013 года
V-tas
58 / / 24.12.2012
А я бы хотел передать привет человеку под ником Dilma, автору Hiasm. Не пора ли Hiasm и Динрус свести в одно целое?
68K
25 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: CassandraDied
Не, я лучше поспать пойду.



Вкратце можно сказать, что множество функций Уолтер Брайт вложил в сам компилятор, поэтому во всех случаях приходится на Динрусе использовать эти функции только в английском их варианте. Например, длина переменной будет представлена как имя_переменной.length, размер класса или структуры как имя_класса_или_структ.sizeof . Короче, есть такой "магический" списочек...

326
25 сентября 2013 года
sadovoya
757 / / 19.11.2005
А меня русскоязычный синтаксис языка программирования только раздражает. Все-равно, что формулы писать русскими буквами. Лучше уж символьный или графический "синтаксис". Но сам-то D кому нужен? Превосходство по некоторым параметрам -- еще не повод писать на D.
414
25 сентября 2013 года
CassandraDied
763 / / 24.05.2012
Цитата: V-tas
Цитата: CassandraDied
Не, я лучше поспать пойду.



Вкратце можно сказать, что множество функций Уолтер Брайт вложил в сам компилятор, поэтому во всех случаях приходится на Динрусе использовать эти функции только в английском их варианте. Например, длина переменной будет представлена как имя_переменной.length, размер класса или структуры как имя_класса_или_структ.sizeof . Короче, есть такой "магический" списочек...


Избавиться от "списочка" несложно же.

68K
25 сентября 2013 года
V-tas
58 / / 24.12.2012
Для базовых типов (int(цел = целое число), uint(бцел = беззначное целое) и т.д.) можно использовать либо общий шаблон, либо создавать для каждого типа отдельную функцию. Для классов вместо ptr создавать функцию-член " укз()", вместо length - "длина()" и т.п. функции, возвращающие соответствующее значение. Возможно есть и другие варианты... Удаление члена из ассоциативного массива выполняется функцией .remove (вначале я это не учёл, пришлось из "удали" переименовывать обратно в remove!) В общем, избавление от списочка не означает избавление от возможности использовать эти магические функции. (а их использование облегчит нагрузку на производительность и быстродействие системы).
68K
25 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: sadovoya
А меня русскоязычный синтаксис языка программирования только раздражает. Все-равно, что формулы писать русскими буквами. Лучше уж символьный или графический "синтаксис". Но сам-то D кому нужен? Превосходство по некоторым параметрам -- еще не повод писать на D.



Для системного программирования, как я понимаю, есть ряд основных языков - это Си, ассемблер, Си++, Дельфи, Фортран (?) и ... Ди(!) Список просто крутой... Или я чего-то не учёл?

68K
25 сентября 2013 года
V-tas
58 / / 24.12.2012
Цитата: sadovoya
А меня русскоязычный синтаксис языка программирования только раздражает. Все-равно, что формулы писать русскими буквами. Лучше уж символьный или графический "синтаксис". Но сам-то D кому нужен? Превосходство по некоторым параметрам -- еще не повод писать на D.



Кстати, вместо икс можно писать Ш (ширина), а вместо игрек В (высота). Вернее КООРДИНАТА ширины или высоты...(!)

68K
25 сентября 2013 года
V-tas
58 / / 24.12.2012
Из
интерфейса Виндоус примерчик "перевода":

////////////////////////////////////////////////////////
struct SIZE {
LONG cx;
LONG cy;
}
alias SIZE SIZEL;
alias SIZE* PSIZE, LPSIZE, PSIZEL, LPSIZEL;

struct РАЗМЕР //SIZE
{
цел cx;//дш - дельта координат ширины
цел cy;//дв - дельта координат высоты
alias cx дш;
alias cy дв;
}
//////////////////////////////
struct RECT
{
LONG left;
LONG top;
LONG right;
LONG bottom;
}
alias RECT* PRECT, NPRECT, LPRECT;

struct ПРЯМ //RECT
{
бцел лево;
бцел верх;
бцел право;
бцел низ;
}
/////////////////////////////////////////////////

Проведите сравнение, с чем вам проще работать...
260
26 сентября 2013 года
Ramon
1.1K / / 16.08.2003
Тролль то совсем ожирел.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог