|
|
3.26, Crazy Alex (ok), 10:47, 22/06/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
Давно не следил, но стандартную либу в этом плане правили. мроблема с том, что GC обеспечивает непоторые довольно важные плюшки, вроде бесплатных слайсов массивов. Но на этот счёт были варианты какие-то.
| |
|
4.67, 11111 (?), 12:32, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
> GC обеспечивает непоторые довольно важные плюшки, вроде бесплатных слайсов массивов.
Но зачем, если есть языки с бесплатными слайсами массивов без GC?
| |
|
|
|
7.76, Crazy Alex (ok), 15:02, 22/06/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Не оно ни разу. Растовская borrow semantics сильно ограничивает использование слайсов. Сделать десяток (возможно перекрывающихся, возможно мутабельных) слайсов и сохранить их в разных объектах с неопределённым временем жизни rust не даст. То есть заставит копировать массив там, где этого можно избежать.
| |
|
|
|
|
3.116, menangen (?), 10:20, 28/06/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
А нахрена его отключать, пиши сразу на сишке. D и хорош тем, что это по сути "компилируемая жава".
| |
|
4.117, Andrey Mitrofanov (?), 10:54, 28/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
> А нахрена его отключать, пиши сразу на сишке. D и хорош тем,
> что это по сути "компилируемая жава".
[Саммоним в тред Главного Эксперта Опенета по Джавве, iZEN-а.] iZEN, вы-хо-ди!
| |
|
|
|
1.4, Alex (??), 23:57, 21/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Этот ваш D умеет инклюдить сишные хидеры и использовать оттуда функции и структуры?
| |
|
2.5, nc (ok), 00:02, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
Вроде бы умеет, но только сишные (без С++ шаблонов).
| |
|
3.12, marco (??), 03:33, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Может использовать сишные и плюснутые библиотеки, как раз переписав хидеры. Для гиков можно использовать в коде ассемблерные вставки.
Программы компилируются очень быстро, да и по быстродействию не проигрывают сишным. Но исполняемые файлы получаются увесистые, так как тянут сборщик мусора.
| |
|
|
5.80, Mihail Zenkov (ok), 15:40, 22/06/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
Мне очень нравится D, но размер исполняемых файлов явно его слабая сторона. Shared libraries не спасает: размер поставки (bin+phobos.so) будет еще больше, чем для статики. Потребление памяти для простых приложений в любом случае очень сильно завышено (в сравнении с C).
ИМХО основная проблема, что по-прежнему линкер не может выкинуть основную массу мертвого кода. Где-то было обсуждение этой проблемы, но сходу ссылку не найду.
Есть еще страница (http://digger.k3.1azy.net/trend/), на которой отслеживалась тенденция размера исполнимых файлов в зависимости от версии, но что-то у меня она ошибку выдавать стала.
| |
|
|
7.87, Mihail Zenkov (ok), 20:08, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
Минимальный пример:
D:
import std.stdio : writeln;
import core.sys.posix.unistd : usleep;
void main() {
writeln("test");
usleep(10000000);
}
C:
#include <stdio.h>
#include <unistd.h>
void main() {
printf("test");
usleep(10000000);
}
Размер бинарника (после strip): C - 5.4K, D - 312.6K.
Потребление памяти:
Private + Shared = RAM used Program
412.0 KiB + 147.5 KiB = 559.5 KiB test_d
68.0 KiB + 68.0 KiB = 136.0 KiB test_c
Для больших программ разница будет несущественна. А вот когда пишешь небольшие системные утилиты - как-то жирновато.
| |
|
8.91, Аноним (-), 22:34, 22/06/2017 [^] [^^] [^^^] [ответить] | +1 +/– | Нет, я всё понимаю когда люди изнывают, что нужно ради одной софтины тащить пол ... текст свёрнут, показать | |
|
|
|
|
4.104, glebiao (ok), 13:24, 24/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> быстродействию не проигрывают сишным. Но исполняемые файлы получаются увесистые, так как
> тянут сборщик мусора.
Дело не в сборщике мусора, там тянется много несколько неожиданных вещей,
типа рантаймовой поддержки интроспекции и т.п. имхо, с этим можно мириться: скорость И простота разработки + скорость исполнения, перевешивают недостаток толстоватых бинарников.
При динамической линковке, размер бинарника вовсе не получается катастрофическим.
| |
|
|
2.6, Crazy Alex (ok), 00:31, 22/06/2017 [^] [^^] [^^^] [ответить]
| +7 +/– |
Нет, так как сишные макросы не умеет (и правильно), да и система типов не совпадает. Для простых случаев есть тулза для трансформации, но правильный вариант - сделать нормальный модуль с вменяемым API. Собственно, основная идея D - "C++ done right", в первую очередь - без сишного легаси.
А вот сишные функции использовать, разумеется, может - при условии, что они соответствующим образом объявлены.
| |
|
3.9, Alex (??), 02:40, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
"Сделать нормальный модуль с вменяемым API" - для чего? POSIX API? Или kernel-to-userspace API? Язык позиционирует себя как язык системного программирования, но мне надо воспроизвести половину системных инклюдников чтобы открыть банальный raw-сокет?
| |
|
4.25, Crazy Alex (ok), 10:42, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
транслированные хидеры libc и так в комплекте. Но как раз сокет - хороший пример того, что лучше завернуть в класс, как минимум - чтобы иметь его закрытие в деструкторе. Так и сделано.
Не беспокойтесь, там довольно много "батареек включено". http://dlang.org/phobos/index.html в помощь, если интересно.
| |
|
|
2.60, Zloy (?), 11:42, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Есть утилиты-трансляторы заголовочных файлов в дишные модули. Так дофига биндингов к сишным либам наделано.
| |
|
3.66, Crazy Alex (ok), 12:31, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Лучше всё же написать, что примерно каждый первый надо руками дочищать, так как в них макрос на макросе обычно, зависящие от того, Что определено во включающем файле. Да и нюансы с типами строк и подобным тоже автоматом не переведёшь. Но да, основную массу работы делает, да.
| |
|
|
1.11, Спайк (?), 03:19, 22/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –6 +/– |
для полного фарша в GCC ещё Limbo добавить и будет совсем конанично. и да, ржавые напряглись! :)
| |
|
|
|
4.71, Andrey Mitrofanov (?), 13:37, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
> гццуст
GC-crust же. //~джи си краст[CODE][jargon]:
GC
/G.C/
[from LISP terminology; Garbage Collect]
[...8<...]
[mueller7]:
crust
[krʌst]
1. _n.
1) корка (хлеба); _перен. средства к существованию; to earn one's crust
[...8<...][/CODE]
| |
|
|
2.15, nc (ok), 07:45, 22/06/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
Многие вещи в Go взяты из Limbo. А Go сейчас - последний язык в этой цепочке (Newsqueak - Alef - Limbo - Go). Так что в каком-то смысле уже есть.
| |
|
1.17, Нанобот (ok), 08:50, 22/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –7 +/– |
>Процесс включения поддержки языка D в GCC начался ещё в 2011 году, но затянулся из-за необходимости приведения кода к соответствию требованиям GCC
GNU-бюрократия затормозила прогресс на шесть лет
| |
|
2.18, Andrey Mitrofanov (?), 09:20, 22/06/2017 [^] [^^] [^^^] [ответить]
| –8 +/– |
>>Процесс включения поддержки языка D в GCC начался ещё в 2011 году, но затянулся из-за необходимости приведения кода к соответствию требованиям GCC
> GNU-бюрократия затормозила прогресс на шесть лет
gcj выкинули наконец. патчи free pascal только для gcc 4.3. Камрады _борются_ !
| |
2.64, Crazy Alex (ok), 12:27, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Там основной была синхронизация разработки с DMD. GDC/LDC долго сильно отставали.
| |
|
3.77, J.L. (?), 15:18, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Там основной была синхронизация разработки с DMD. GDC/LDC долго сильно отставали.
а сейчас GDC/LDC по поддержке фич (и качеству генерируемого кода ?) на сравнимом уровне с DMD ?
LDC или GDC лучше брать при ознакомлении с D в каком-нить своём простеньком проекте ?
| |
|
4.84, Crazy Alex (ok), 16:55, 22/06/2017 [^] [^^] [^^^] [ответить]
| +4 +/– |
Для ознакомления на простеньком проекте - вообще всё равно какой из них брать, они давным-давно практически вровень. DMD чуть впереди, но совсем чуть. По генерируемому коду LDC был получше, насколько я помню, но оно от задачи зависит, так что если всерьёз надо выжать всё, что можно - лучше мерять.
| |
4.92, Аноним (-), 22:38, 22/06/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
Если нужны все самые свежие фичи сиюминутно закомиченные в мастер ветку — dmd. Если нужен компилятор с нормальным оптимизатором и готовы недельку другую подождать свежих фич — ldc.
gdc долго заброшенный стоял, и только сейчас резко начал обновлятся, стоит подождать прежде чем его использовать, кроме кpacноглaзия это ничем хорошим не грозит.
| |
4.101, glebiao (ok), 13:17, 24/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
dmd генерит не самый оптимальный код.
ldc значительно лучше но до последнего времени в предкомпилированной поставке
не было динамической версии стандартной библиотеки, так что компиляция была
только в статику.
последний gdc, похоже, делает хороший код, но багзилла полна.
по скорости компиляции dmd быстрее ldc быстрее gdc.
| |
|
5.109, Crazy Alex (ok), 15:16, 26/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
Добавьте, что по самому качеству кода компилятора dmd первый - в нём, как правило, в первом исправляются баги и он по-прежнему является эталоном.
Но за исключением каких-то совсем уж серьёзных проектов всё это не прицнипиально совершенно, можно любой из трёх брать.
| |
|
|
|
|
1.24, Аноним (-), 10:40, 22/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –5 +/– |
Поскольку FSF не любит C++, то, может, полюбит D. Идея для Gtk'шников - переписать Gtk на D и убить двух зайцев. 1) Помочь взлететь языку, использовав в популярном тулките. 2) Поправить пошатнувшииеся позиции Gtk, переписав его на настоящем ОО ЯП.
| |
|
2.62, Zloy (?), 11:45, 22/06/2017 [^] [^^] [^^^] [ответить]
| –3 +/– |
Идея отличная. Но на дишечке итак делается dlangui, проще тогда уже его доводить до конкурентноспособного состояния.
| |
|
3.79, Pinkie (?), 15:31, 22/06/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
dlangui делается одним человеком, это любительский проект.
Gtk же штука покрупнее. Плюс, насколько я понял - в dlangui парсится строка текста как разметка, а очень хотелось бы описание интерфейса компайлтаймовым языком, как в Vibe.d diet-шаблоны описываются.
| |
|
4.82, Crazy Alex (ok), 15:42, 22/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
Я бы сказал, что Gtk - штука сильно покрупнее, чем вообще надо для GUI.
А что пишется одним человеком - ну много чего так начинается, можно линуксовое ядро вспомнить ;-) Впрочем, идея D как гнушного базового языка в любом случае сомнительна. У них большинство архитектурных решений как-то странно принимается, у какой-нибудь Scheme и то больше шансов будет.
P.S. Судя по гитхабу их там всё же четверо. А вещь на вид неплохая, пригодится.
| |
|
|
|
1.75, анонимбр (?), 14:06, 22/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| +2 +/– |
(Как-то натыкался на такой проект) D программы быстро собираются поэтому вполне можно писать и скрипты на нем.
| |
|
|
3.81, Crazy Alex (ok), 15:40, 22/06/2017 [^] [^^] [^^^] [ответить]
| +1 +/– |
Ты с джавой перепутал. ООП здесь не страшнее, чем в том же питоне. Можно и в чисто процедурном стиле свой код писать.
Типизация - auto в помощь. Переменные объявлять придётся, но для скрипта больше, чем в пять строк, это только плюс. А если больше 50 строк - типизация резко становится полезной.
| |
|
4.86, Аноним (-), 19:12, 22/06/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
В скрипте не нужно ооп, типизация и python. Либо вы не совсем понимаете значение термина "скрипт".
| |
|
5.93, Crazy Alex (ok), 02:48, 23/06/2017 [^] [^^] [^^^] [ответить]
| +2 +/– |
В скрипте на пять строк - не нужно (хотя не мешают). В чём нибудь вроде скрипта бэкапа или для сборки строк на 400 - уже помогают. В скриптах вроде тех, которыми я в своё время музыку с торрентов в стандартный для себя формат преобразовывал (а там и парсинг метаданных, и генерация каталога и прочее) - уже очень к месту. Там, правда, перл был. Классы в скриптах, конечно, никто не пишет, а вот то, что библиотечные функции удобно сгруппированы по модулям/классам - гуд.
| |
|
|
3.102, glebiao (ok), 13:20, 24/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Скрипты с типизацией и с ООП? Да ну к черту вас.
на D есть такой замечательный проект, поддержка программирования в скрипотовом стиле.
легко писать "скрипты" на D практически в питоновском ключе.
так что, вполне.
| |
|
4.105, Аноним (-), 21:15, 24/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
Python - это сильно "не первый сорт", поэтому очень зря ориентиро на него.
| |
|
5.106, glebiao (ok), 22:11, 24/06/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
>Python - это сильно "не первый сорт", поэтому очень зря ориентиро на него.
И что первый? PowerShell?
| |
5.112, Аноним (-), 22:22, 26/06/2017 [^] [^^] [^^^] [ответить]
| –1 +/– |
Если Python не первый сорт для клея, то я даже не знаю что тогда.
| |
|
6.113, Led (ok), 22:39, 26/06/2017 [^] [^^] [^^^] [ответить]
| +/– |
> Если Python не первый сорт для клея
Разве что нюхательного.
| |
|
|
|
|
|
|
4.94, . (?), 03:31, 23/06/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
Попробуйте Pike. Это как раз для "писать скрипты на Си" ...
| |
|
|
|
1.89, DV60 (?), 20:55, 22/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –3 +/– |
Опоздали.Есть Nim и использует GCC как надстройка по умолчанию не дожидаясь включения.
| |
1.107, Вячеслав (??), 22:13, 25/06/2017 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
А как решается вопрос о совмещении 1005000 компиляторов в одном?
(Я не техническую сторону вопроса имею в виду а организационно-управленческую: как это происходит - пишется стандарт взаимодействия, cогласовывается АPI, определяется политика? Может, проще разрабатывать не сам компилятор а специальный документ, описывающий математически верифицируемый и расширяемый общий интерфейс всех частей такой программы а также - грамматики описания поддерживаемого языка и налагать лицензионные ограничения свободного и открытого кода на всех кто им решит воспользоваться этими наработками в своих разработках. При этом остальные части программ пишут те, кому это нужно. Иначе компилятор "gcc" не осилит никогда даже поддержку и первых 150, по распространённости, языков программирования).
| |
|
|
3.115, Вячеслав (??), 08:42, 27/06/2017 [^] [^^] [^^^] [ответить]
| –2 +/– |
> Назови хотябы 35 широкоиспользуемых компилируемых языков
Это сделать не получится - потому что, наверное, большая часть их ещё не создана, но будет создана кем то и когда то в будущем - под возникшие потребности.
Уже сейчас, разным оценкам, в настоящее время существует от двух с половиной до десяти тысяч различных языков программирования: если понимать язык как инструментальное средство труда под названием "программирование", то можно сказать, что это аналоги инструментов труда, самых разнообразных - от самопальных, до профессионального заказного инструмента и оснастки для машиностроительных заводов.
И всё это придётся поддерживать с минимальными усилиями - во имя работы унаследованного кода (ситуация с Коболом в банках сейчас или будущие горы археологического кода на Java).
| |
|
|
|