The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Вышла новая версия dmd 2.063, компилятора для языка D

31.05.2013 10:47

Вышла новая версия кроссплатформенного компилятора языка программирования D - dmd 2.063. С предыдущего релиза в компилятор и системную библиотеку было внесено более 260 исправлений и улучшений. В новой версии подверглась существенной переработке библиотека управления процессами std.process, добавлена возможность использовать шаблоны внутри функций, а также внесено несколько сотен других улучшений и дополнений. В настоящий момент идут активные работы по бутстраппингу компилятора, нацеленные на то, чтобы переписать компилятор с языка С++ на сам D.

  1. Главная ссылка к новости (http://forum.dlang.org/thread/...)
Автор новости: Doris
Тип: Программы
Ключевые слова: dlang
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (68) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, ВовкаОсиист (ok), 11:50, 31/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Судя по исходникам, x86 онли, пока(?).
     
     
  • 2.3, Crazy Alex (ok), 12:05, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    на 64 работает давно
     
     
  • 3.4, ВовкаОсиист (ok), 12:10, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    имеется ввиду отсутствие поддержки ARM. Хотя помнится где-то видел бекенд для gcc, благодаря гцц-инфраструктуре были доступны и другие архитектуры, в т.ч. арма. Почему автор решил писать кодо-генератор с нуля - не понятно.
     
     
  • 4.5, inferrna (ok), 12:33, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    У них ещё ldc на llvm есть.
    > Почему автор решил писать кодо-генератор с нуля

    наверное, он очень гордый

     
  • 4.12, Crazy Alex (ok), 15:01, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ответ от 28.08.2012:

    GDC and LDC are both available for ARM processors on the last Debian stable.

    Вот отсюда:

    http://forum.dlang.org/thread/rjkfmzqvixxvbnkcmtul@forum.dlang.org#post-

     

  • 1.2, anonim (?), 11:57, 31/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    когда уже на нем facebook перепишут ?
     
     
  • 2.6, BayaN (ok), 12:56, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +5 +/
    О, ты тоже ненавидишь facebook.
     
  • 2.7, Аноним (-), 13:28, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    И фконтактик :)
     

  • 1.8, Аноним (-), 13:32, 31/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    Пока его ABI не станет совместимо с C++ным, не взлетит.
     
     
  • 2.11, Аноним (-), 14:56, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    D это попытка избавить мир от C++, а не сделать что-то совместимое с ним. А C он изначально дружил.
     
     
  • 3.20, Аноним (-), 17:20, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Простой вопрос - а что _не_ совместимо с си? :-)
     
     
  • 4.32, Kodir (ok), 19:48, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Вопрос: А ЧТО ТОЛКУ от того, что всё с ним совместимо? Вам нужны DOS драйвера? OS/2 приложения? Линуксу уже как лет 15 нужен нормальный язык, а не объектноориентированное укропище типа Цэ++. Пока будет Цэ/Цэпипи, не видать FOSS стабильности как ушей.
     
     
  • 5.49, ананим (?), 21:01, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Выдыхай, бобёр.
    Си (и линуху в частности как одного из продуктов) хватает и стабильности, и гибкости.
    На пару балмеров и пару (сотен) таких как ты хватит.

    Зыж
    Ха! Стабильности ему не хватает.
    Что там ещё в мире то делается?

     
  • 4.63, Z (??), 00:36, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    .NET (по простому, а не через ActiveX, DOM или другими очень обходными путями).
     
     
  • 5.64, ... (?), 03:23, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Мимо.

    http://msdn.microsoft.com/en-us/library/aa984739(v=vs.71).aspx

     
  • 2.14, Аноним (-), 15:48, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Нет такого понятия, как "ABI C++". Спецификация С++ намеренно оставляет ABI неопределённым, в силу чего разные компиляторы для разных платформ (или разные компиляторы для одной платформы, или один и тот же компилятор для разных платформ, или даже разные версии одного и того же компилятора для одной и той же платформы) имеют несовместимые друг с другом ABI.
     
     
  • 3.27, Аноним (-), 18:23, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пусть так. Ну хотябы совместимость с тем ABI, которая у современных версий g++. Qt скоро будет в каждой кофемолке.
     
  • 3.37, Аноним (-), 20:04, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >Нет такого понятия, как "ABI C++".

    man itanium abi

     
     
  • 4.41, Аноним (-), 20:27, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > man itanium abi

    Итаник почти сдох. Кого его abi волнует?

     
     
  • 5.47, Аноним (-), 20:52, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тех, кто пишет G++, очевидно. Itanium ABI там используется не только для собственно итаниума, но и для других платформ, включая x86_64. Впрочем, универсальным от этого этот ABI не становится, да и истинность утверждения "без этого не взлетит" сомнительна — бОльшая часть "взлетевших" языков совместимости с этим ABI не имеет, включая, как ни странно, Си.
     

  • 1.9, Аноним (-), 13:39, 31/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –4 +/
    Напомните, это же проприетарщина, либо под какой-то кривой лицензией?
     
     
  • 2.13, Crazy Alex (ok), 15:08, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Напоминаю.

    DMD состоит из нескольких частей.

    1) frontend - открытая лицензия (Boost License), её же используют ldc и gdc

    2) бакэнд - Брайт в свое время заключил некое соглашение с Семантиком (то ли права на код продал, то ли что-то подобное), так что его возможности несколько ограничены. Код доступен на гитхабе, но для производных продуктов вы должны получить разрешение Брайта, кторое он даёт совершенно механически всем желающим. Даже патчи как-то принимает

    3) стандартная библиотека лицензируется под Boost License, используется (с небольшими подпилами) в LDC и GDC.

    LDC/GDC лицензионно чисты, но обычно несколько отстают от официальной версии (до месяца), над ними также работает поменьше народу. LDC также несколько ограничен технически архитектурой LLVM.

     
     
  • 3.38, Аноним (-), 20:07, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >LDC также несколько ограничен технически архитектурой LLVM.

    А почему clang не ограничен?

     
     
  • 4.42, Аноним (-), 20:29, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А почему clang не ограничен?

    Не знаю где он там не ограничен, но парни из AMD хлeбнули немало горя с LLVM, пытаясь научить этого ежа летать. Код для VLIW генерить он может только с феерическими костылями, сравнимыми по написанию с отдельным кодогенератором. Оно даже просто технически-валидный поток команд не может сгенерить - приходится парсить результат работы этого бредогенератора и фиксить за ним то что он нагенерил.

     
  • 4.48, Crazy Alex (ok), 20:53, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Честно говоря, не помню нюансов уже. Некоторые оптимизации не получалось сделать в LDC и говорили, что скорее всего и не получится.
     

  • 1.15, Аноним (-), 16:17, 31/05/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    а что есть интересного написанного на этом языке?
     
     
  • 2.16, Аноним (-), 16:28, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    На D2? Ничего. И не будет, пока эти клоуны продолжают чуть ли не в каждой версии язык корёжить. И заменой С++ это чудо в текущем виде не станет, увы. Ибо JIT, de jure отключаемый, de facto при отключении превращает всю стандартную библиотеку в тыкву.
     
     
  • 3.18, zunkree (ok), 17:06, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Какой JIT, Это компилируемый язык! А если ты про сборщик мусора, то да -- многие возможности стандартной библиотеки не будут работать с отключенным сборщиком.
     
     
  • 4.24, Аноним (-), 17:55, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Тьфу, конечно же я про GC. Сам не знаю, какого лешего про JIT написал.
     
  • 3.22, Crazy Alex (ok), 17:29, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Одна мелочь - те, кто "корёжат" язык и те, кто на нем пишет (правда в опенсорсе у них только библиотеки) - одни и те же люди. Комьюнити там небольшое, но крайне квалифицированное и активное, и изменения в языке основательно обсуждаются. Вон в нынешней версии - убрано (точнее задепрекейчено) только явное безумие, которое в здравом уме и так ни один нормальный программист не напишет.
     
     
  • 4.25, Аноним (-), 17:58, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Вот только есть одна проблема. С первого релиза DMD2 прошло уже шесть лет, а процесс стабилизации возможностей языка никак не завершится. И чем дольше это продолжается, тем меньше остаётся шансов на то, что язык таки получит широкое распространение.
     
     
  • 5.30, Crazy Alex (ok), 19:16, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Как минимум последние пару лет ничего там всерьез не ломали. Изменения есть, но обычно это довольно эзотерические углы, которые мало кого реально цепляют. Не говоря о том, что в таких случаях обеспечивается то, тчо сарый код не смысл меняет а становится невалидным и предлагаются варианты фиксов.

    А что не взлетит - вполне вероятно - никакой большой которы за D нет, и компиляция в натив для сложного софта не в моде.

     
     
  • 6.65, JavJav (?), 12:52, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    К сожалению это не так: до сих пор даже переносят библ. ф-ции из модуля в модуль и переименовывают
     
  • 5.34, Kodir (ok), 19:50, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > С первого релиза DMD2 прошло уже шесть лет, а процесс стабилизации возможностей языка никак не завершится.

    "Тщьеорт побьери!" Все обе программы на Ди от возмущённого ононизмуса перестали работать!! Да? Или ты так, попердеть вышел?


     
  • 5.60, Аноним (-), 23:05, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > С первого релиза DMD2 прошло уже шесть лет, а процесс стабилизации возможностей языка никак не завершится.

    От первого релиза С++ (1983 год) до его стандартизации (1998 год) прошло 16 лет. Будем ждать.

     
  • 2.17, Аноним (-), 16:36, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > а что есть интересного написанного на этом языке?

    Hello, world.

    PS. Фуле спрашиваешь? Напиши, йопто!

     
  • 2.19, zunkree (ok), 17:12, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > а что есть интересного написанного на этом языке?

    Много чего есть, с частью можно ознакомится тут http://www.prowiki.org/wiki4d/wiki.cgi , остальное поискать на гитхабе. Есть даже веб-фреймворк http://vibed.org/

     
     
  • 3.21, Аноним (-), 17:22, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –3 +/
    То есть как и говорилось - ничего! Ну не больно то и надо. Let's GO! ;-)
     
  • 3.23, Crazy Alex (ok), 17:33, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Сейчас относительно D лучше говорить наоборот - сначала надо искать на гитхабе.

    Ну и вот здесь лежат конфиги для автоматической сборки библиотек, по ним удобно всё скопом оценивать, благо видны и краткие описания, и даты последнего обновления репы: http://registry.vibed.org/

     
     
  • 4.26, zunkree (ok), 18:04, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо большое.
     
  • 2.28, Аноним (-), 18:45, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –4 +/
    Нет, ибо экосистема безнадёжно загублена. Нестандартностью, проприетарным компилятором, убогостью по сравнению с C++, никакой совместимостью, отсутствием advocacy.

    Единственное что я видел интересного на этом языке - это openmw, свободный клон TES 3: Morrowind. Только вот его переписали на C++ после чего разработка ускорилась на порядок.

     
     
  • 3.29, Crazy Alex (ok), 19:12, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Простите, но после "убогости по сравнению с плюсами" говорить дальше не о чем.
     
     
  • 4.31, Аноним (-), 19:18, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    А вы наверное из тех кто начитался хомячковых высеров о том что D круче, а сам язык не видели?
     
     
  • 5.33, Аноним (-), 19:49, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Это скорее тот, кто С++ ниасилил )))
     
     
  • 6.36, Аноним (-), 20:00, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Есть три вида людей: те, кто не пробовали осилить С++, те, кто пробовали и не осилили, и те, кто выучили пару идиом и говорят, что осилили.
     
     
  • 7.40, Аноним (-), 20:16, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну я как бы 3D-двиг (OpenGL >= 3.3) пишу на С++ и весьма успешно :) К какому типу вы меня отнесете - мне плевать :)
     
     
  • 8.45, chinarulezzz (ok), 20:50, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    стал бы ты писать что именно пишешь на С , если на мнение плевать -D... текст свёрнут, показать
     
     
  • 9.66, JavJav (?), 12:56, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    надо быть очень убогим программистом, чтобы знание С в мое время ВСЕ им владе... текст свёрнут, показать
     
  • 8.51, Аноним (-), 21:27, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    К тому типу, который думает, что выучил С , а сам спецификацию с её 1000 стран... текст свёрнут, показать
     
     
  • 9.57, Аноним (-), 22:03, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    какой няшный батхёрд ... текст свёрнут, показать
     
     
  • 10.58, Аноним (-), 22:40, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    8230 сказал представитель чувствующих оный батхёр b т b всякий раз, когда кт... текст свёрнут, показать
     
  • 5.43, Crazy Alex (ok), 20:38, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Что характерно - ни одной внятной претензии вы не привели. И да, я D знаю достаточно хоршо, благо пару лет в их рассылке провисел, так что мне лапшу на уши можете не вешать.
     
     
  • 6.53, Аноним (-), 21:36, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Распинаться перед тем кто выхватывает случайную подстроку из поста и подставляет в шаблон "Простите, но после % говорить дальше не о чем"? Нет уж, спасибо - с вам говорить действительно не о чем.
     
  • 3.35, Kodir (ok), 19:58, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, ибо экосистема безнадёжно загублена.

    Полная пурга от мистера ононизмуса. Какая экосистема, вы о чём, ваше мимозейшество?
    Ди - это прежде всего ЯЗЫК, который развивается по нормальным законам софтостроения - вводятся фичи, тестируются, принимается решение брать-не брать. Попутно развивается библиотека. Кому и в каком месте чешется Ди? Язык - превосходный, впитал в себя столько интересных вещей, на которые сипиписники ещё лет 20 облизываться будут. Казалось бы, ни у кого нет "легаси" библиотек на мегабайты Ди-кода, чё всё ноете-то? Напишете код, тогда и возмущайтесь "нестабильностью"! А то выйдут, пёрнут, "а я чо? я ничо - вы уж сами разбирайтесь!" - известный анекдот про тупого кузнеца.

    У меня был написан прокси-сервер, в котором не сменилось ни строчки кода (благодаря Ди уместился в 500 строк). Мне почему-то развивающийся Ди не мешает. Хотя, может я не учёл плохих танцоров?...

     
     
  • 4.39, Аноним (-), 20:12, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >который развивается по нормальным законам софтостроения - вводятся фичи, тестируются, принимается решение брать-не брать.

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

    >на которые сипиписники ещё лет 20 облизываться будут

    Половина есть в C++11 в куда более удачной форме, оставшиеся удачные фичи из D и не только попадут в C++14 и C++17.

    > Напишете код, тогда и возмущайтесь "нестабильностью"!

    OpenMW уже написали. А потом переписали на плюсы и избавили себя от проблем.

     
     
  • 5.44, Crazy Alex (ok), 20:41, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Между разработкой плюсво и D не было разницы, кога Стауструп плюсы в Bell Labs ваял, вноя изменения по собственному опыту и пожеланиям коллег. Сейчас плюсы (которые я, кстати, воплне ценю - но понимаю их грабельность) безнадежно завязли в комитетщине, в результате которой те же концепты, например, так и не были приняты.
     
     
  • 6.54, Аноним (-), 21:39, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > безнадежно завязли в комитетщине

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

    > в результате которой те же концепты, например, так и не были приняты.

    А вы хоть удосужились почитать почему они не были приняты?

     
  • 5.46, Crazy Alex (ok), 20:51, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Две основные фишки D - отказ от совместимости кода с сями и приличный синтаксис шаблонов - в плюсы не попадут никогда. Нормальный const - тоже. Как и compile-time code execution, alias this, унифицированный синтаксис вызова функций и т.п.
     
     
  • 6.55, Аноним (-), 21:44, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Две основные фишки D - отказ от совместимости кода с сями

    Да, удачи. Пусть от любой совместимости откажутся, а то что-то в вами же указанной репе с безумными легионами D'шных пакетов (http://registry.vibed.org/) почти все - обёртки над библиотеками на пормальных языках.

    > и приличный синтаксис шаблонов...
    > Нормальный const

    Вот, теперь пошли шаблоны "в D нормальный %s". И не скажешь что не аргументированно :)

     
     
  • 7.61, Crazy Alex (ok), 00:31, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ну да, повнимательнее посмотреть вам было лень. Там вообще-то оберток меньше половины, а те, что есть - к большим штукам вроде OpenSSL, баз данных, LLVM.

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

     
  • 4.50, Аноним (-), 21:12, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Слова коверкать перестань, глупо выглядишь А экосистема действительно никакая ... текст свёрнут, показать
     
     
  • 5.52, Crazy Alex (ok), 21:34, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот David Simsha его с успехом применяет для исследований в области генетики - датасеты у него громадные, и джавы всякие с их дикими накладными расзодами на объект неудобны. С другой стороны - у плюсов большие проблемы с приличными абстракциями и высокоуровневыми описаниями. А D  в самый раз подошел.

    Если коротко - то D хорош там, где, одной стороны, нужен приличный высокоуровневый язык, с другой - задолбали родовые проблемы динамики и отсутствия типизации у скриптовых. Веб тоже под это дело подходит, кстати - то, что там традиции другие - вопрос отдельный. Там, вон, PHP выкинуть никак не могут.

     
     
  • 6.56, Аноним (-), 21:46, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну вот David Simsha его с успехом применяет для исследований в области
    > генетики

    Да-да, не забуду тот феерически пост когда кто-то ему показал как то же делается на C++ - в 2 раза меньше кода, код гораздо понятнее и работает быстрее в полтора раза.

     
     
  • 7.59, Аноним (-), 22:53, 31/05/2013 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Можно ссыль? Очень интересно.
     
  • 7.62, Crazy Alex (ok), 00:32, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ссылочку можно?
     
  • 7.67, JavJav (?), 13:03, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Не представляю что можно написать на С++ коротко, а на D нельзя. Что есть в С++, чего нет в D?
     
  • 5.68, Аноним (-), 22:40, 01/06/2013 [^] [^^] [^^^] [ответить]  
  • +/
    вот для web D сейчас в основном и применяется. Все больше компаний подсчитывает, сколько лишних ресурсов потребляется их любимыми рорами и джангами, ужасается, и переходит - кто на node.js, кто на go, кто на vibe.d :)
     

  • 1.69, анонимн (?), 09:05, 03/06/2013 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Скрипты на D: http://dlang.org/rdmd.html

    D хорош скоростью компилирования.

    (Помню некоторое разочарование, когда начал писать на C++ под i286/i386. Сливал подчистую Pascal - Pascal компилируется практически мгновенно)

    D вполне заменяет PHP, Python, Java, C#, bash & etc и дополняет C++

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру