Project

General

Profile

Общие вопросы

Added by Natalia_multiclet about 11 years ago

Общие вопросы


Replies (59)

RE: Общие вопросы - Added by Yaisis over 9 years ago

Ещё решил написать по поводу собственного компилятора и байткода.

Вот вы делаете свой компилятор языка С/С++, свой байткод и свой генератор кода.
А Эльбрусовцы, вроде тоже делают свой компилятор С/С++ и возможно другие Российские производители тратят своё время на аналогичные вещи - тоже всё пишут с нуля...

Почему бы вам не объединиться и развивать вместе компилятор языка и байткод, а генераторы будете развивать по-отдельности. Тогда так вы будете эффективней использовать своё время и быстрее создавать соответствующие технологии, а байткод получится создать более универсальным, т.к. в нём уже будете не одни вы заинтересованы. Можно на каком-нибудь гитхабе например исходники открыть и разрабатывать вместе(или создать закрытую разработку, но открытую между вами, но это хуже), может и другие люди подтянутся и начнут разрабатывать то, что им интересно -- кто-то стандарты С/С++, кто-то может другие языки добавлять, но если у кого-нибудь будут какие-нибудь секреты в области инструкций процессора, то их будет использовать только генератор кода, к которому необязательно открывать доступ.

Вообщем вокруг этого сформируется сообщество заинтересованных лиц, которое и будет всё это развивать.

В таком способе развития, кроме более эффективного использования времени и создания более универсальной технологии будет ещё одно преимущество -- на свет начнёт появляться Российская программная платформа, которая в будущем может сможет конкурировать с LLVM и в такой платформе заинтересованы вы - производители процессоров и Россия в целом.

RE: Общие вопросы - Added by VaalKIA over 9 years ago

В коммерческих проектах можно полагаться только на себя (ну хотя бы по срокам). Кооперация конечно же - возможна, но скорее задним числом: брать что-то, что уже реализовано у других или сравнивать кто лучше сделал.. а вот тут это переходит в разряд теории, потому что на практике это не будет совместный проект, а значит или брать целиком или - никак, соотвественно, всё это не работает.

RE: Общие вопросы - Added by Yaisis over 9 years ago

"В коммерческих проектах можно полагаться только на себя (ну хотя бы по срокам)."
Apple выпускает коммерческую продукцию, эта фирма разрабатывает LLVM, разработчиков этой фирмы больше всего в сообществе LLVM, эта фирма рассчитывала только на себя, но остальные разработчики тоже внесли вклад в развитие LLVM, что пошло на пользу самой Apple. Проект LLVM стал очень популярен и Apple им пользуется, но что мы наблюдаем сейчас ? А то, что эта фирма стала отстранятся от развития самого LLVM, но так же она стала развивать свой язык программирования swift, основанный на LLVM, т.е. она получает и дальнейшую выгоду от того, что LLVM развивает сообщество, на которое Apple не тратит деньги, но это положительно сказывается на её продуктах.

"а вот тут это переходит в разряд теории, потому что на практике это не будет совместный проект"
Всё открытое ПО -- это совместный проект, например в развитии ядра Линукс участвует куча коммерческих фирм, таких, как IBM, Samsung и т.д. И даже Microsoft там что-то делает. Все они преследуют только свои выгоды, каждый из них вносит в ядро такие изменения, в которых больше всего заинтересован он сам, но суммарный эффект от всех этих изменений ведёт к развитию ядра во всех направлениях, что выгодно всем этим фирмам.

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

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

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

И есть ещё момент, который вам может и не важен. Он не важен в том случае, если компилятор делать только под себя, но если вы хотите, чтобы ваш байткод стал потом популярным, то чем раньше его откроете, тем лучше. Потому что, чем раньше он будет набирать сообщество вокруг себя, тем будет это сообщество больше в будущем. Другими словами, например, если сейчас открыть код, то сообщество может состоять из сообщества разработчиков фирмы плюс 2 человека из вне, а через пять лет оно может к примеру вырасти до 1000 человек, но если код открыть, через 5 лет, то сообщество будет состоять из сообщества фирмы плюс 2 человека из вне и понадобится ещё 5 лет, чтобы оно выросло до 1000.
Конечно понимаю, что вам не до этого и скорее всего вы делаете только для себя.

Но я это всё написал по той причине, что на какого Российского разработчика процессоров не посмотри -- все они развивают свои компиляторы языков С/С++, все они всё это развивают с нуля. Все они тратят зря время на то, что другие делали уже много раз до них и все они повторяют эти действия.
LLVM придумана именно для того, чтобы избавить людей от этих множественных повторяющихся ненужных действий, которые только тратят время разработчиков, а время -- это деньги, расходуемые на их зарплаты.
Конечно я понял, что с байткодом LLVM у вас возникли трудности, но если вы решили сделать свой байткод, то можно было бы сделать свой аналог LLVM, имеющий вокруг себя своё сообщество и облегчающий труд остальных Российских разработчиков, который за одно исключал бы дублирование разработки компилятора и заменял бы это на совместное развитие того, чего ещё нет в том, что уже существует.

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

И проинформировав вы их сейчас, то лет через 5 возможно байткод LLVM начнёт поддерживать вашу архитектуру, и в друг к тому времени вы выпустите десктопный процессор, то тогда такая поддержка будет как раз кстати.

RE: Общие вопросы - Added by Zveruga over 9 years ago

"2.Совершенно не ясно, как эффективно транслировать так называемые phi-узлы (для обычной регистровой машины - это просто линейный блок с несколькими точками входа в него, но для Мультиклета такая конструкция противоестественна)."

Можете привести пример кода на Си? Мне непонятно в чём проблема.

RE: Общие вопросы - Added by VaalKIA over 9 years ago

"Всё открытое ПО -- это совместный проект"
Речь шла о двух российских компаниях, которым можно скооперироваться, это совсем не открытое ПО.

"Тоже самое касается вашего компилятора --"
У меня только планы по изучению этой темы и они уже лет 10 планы...
И к мультиклету я не имею никакого отношения.

RE: Общие вопросы - Added by Yaisis over 9 years ago

"Речь шла о двух российских компаниях, которым можно скооперироваться, это совсем не открытое ПО."
Даже так совместный труд должен быть более эффективным, т.к. разработку компилятора можно разделить на части и каждая сторона будет свою часть делать.

А так, если подумать, то и та и та фирма делает одно и тоже, когда могли бы разделить это на два и делать по половинке.

И есть фирмы, которые иногда объединяются и разрабатывают закрытые проекты вместе. Сейчас сложно привести пример, но что-то подобное я видел.

Так же выше я прочитал то, что они разрабатывают свою систему, похожую на LLVM и поэтому есть смысл сделать проект открытым, чтобы присоединялись все заинтересованные лица.

"У меня только планы по изучению этой темы и они уже лет 10 планы...
И к мультиклету я не имею никакого отношения."

Извините, не обратил внимание, думал, что общаюсь с одним из разработчиков данных процессоров или их программных частей.

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

RE: Общие вопросы - Added by krufter_multiclet over 9 years ago

У нас по компилятору всё в открытом доступе http://multiclet.com/community/projects
Разработчика на форуме имеют в названии никнейма постфикс multiclet.

RE: Общие вопросы - Added by Yaisis over 9 years ago

Это хорошо, что в открытом доступе.
Про multiclet в никнейме я знал, просто внимания сразу не обратил.

RE: Общие вопросы - Added by Yaisis almost 9 years ago

Сейчас подумал, кое о чём.
Помните мы тут обсуждали(или в соседних ветках), про одновременное выполнение веток условий. Условия порождают новые параграфы, а если параграфы маленькие, то они тормозят вычисления.
Вот пришла такая идея, что если попробовать на уровне компилятора сделать такую оптимизацию -- все условия с маленьким телом заменить на арифметические операции. Таким образом будет много больших параграфов.
Вообщем можете как-нибудь попробовать добавить такую экспериментальную оптимизацию в свой компилятор, которая будет включаться соответствующим ключом. И посмотрите, как она повлияет на производительность.

RE: Общие вопросы - Added by krufter_multiclet almost 9 years ago

Разработчик компилятор читает данный форум, я думаю он обратит внимание на эту оптимизацию.

RE: Общие вопросы - Added by Yaisis almost 9 years ago

Читал недавно вашу последнюю статью на хабре про R1 и там в конце был список статей, которые вы планируете ещё написать.
В комментариях увидел, что зашла речь о LLVM и было упоминание о вашем аналоге, но многие люди не в курсе его существования.
Думаю, что неплохо было бы ещё написать статью про ваш аналог LLVM, как он устроен, как создавать компиляторы языков под него(лучше с небольшим примером) и т.д.
Во введении надо написать причины его создания, чтобы в комментариях не упоминали про велосипеды.

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

RE: Общие вопросы - Added by VaalKIA almost 9 years ago

А ещё из ветки действия пропали уже все события за давностью, у вас что - разработчик компилятора, в отпуске?

RE: Общие вопросы - Added by EviLOne almost 9 years ago

Там же на хабре писали, что произвели ротацию разработчиков компилятора, и вроде как работа пошла быстрее. Сам с нетерпением жду его выхода или какой-либо информации о нем.

RE: Общие вопросы - Added by krufter_multiclet almost 9 years ago

Главный разработчик компилятора работает, комментарии на хабре касательно компилятора и LLVM были от него.
У него сейчас приоритет закончить компилятор, затем статья с бенчмарками.

RE: Общие вопросы - Added by VaalKIA over 8 years ago

krufter_multiclet wrote:

Главный разработчик компилятора работает, комментарии на хабре касательно компилятора и LLVM были от него.
У него сейчас приоритет закончить компилятор, затем статья с бенчмарками.

Тем не менее, старый разработчик отчитывался в действиях на форуме постоянно (в задачах что ли или в изменениях по файлам), новый один раз в конце месяца отчитался и уже два месяца ни слуху ни духу.

RE: Общие вопросы - Added by krufter_multiclet over 8 years ago

VaalKIA wrote:

krufter_multiclet wrote:

Главный разработчик компилятора работает, комментарии на хабре касательно компилятора и LLVM были от него.
У него сейчас приоритет закончить компилятор, затем статья с бенчмарками.

Тем не менее, старый разработчик отчитывался в действиях на форуме постоянно (в задачах что ли или в изменениях по файлам), новый один раз в конце месяца отчитался и уже два месяца ни слуху ни духу.

У каждого разработчика свое понимание отчетности и открытости. Но работы по оптимизации компилятора Си89 ведутся.

RE: Общие вопросы - Added by Anonymous over 8 years ago

Читаю и удивляюсь

phi-узлы (для обычной регистровой машины - это просто линейный блок с несколькими точками входа в него

Нет.

В LLVM нет некоторых методов оптимизации, которые нам нужны для генерации оптимального кода для Мультиклета

Так напишите. LLVM - открытая система.

проще залезть в исходиники clang и переделать компиляцию с байткода LLVM на компиляцию в ваш байткод

Автор, пиши ещё!

Остальное тоже жесть.

я LLVM знаю только поверхностно

Да, тут вы правы.

RE: Общие вопросы - Added by Yaisis over 8 years ago

Vladimir wrote:

проще залезть в исходиники clang и переделать компиляцию с байткода LLVM на компиляцию в ваш байткод

Автор, пиши ещё!

Что ж вы не полную часть предложения вставили, правильнее было бы цитировать вот так:

...то может будет проще залезть в исходиники clang и переделать компиляцию с байткода LLVM на компиляцию в ваш байткод ?

Фразу "может будет" вы не заметили ?
И вопросительный знак в конце предложения вам тоже не видно ?
Вы не видите, что там нет утверждения, а подразумевается анализ всех способов и выбор лучшего ?
Если вы знаете, как там всё устроено, то так и скажите, например, что такой вариант сложнее и не подходит.

Сейчас же я скажу, что в исходники clang`a лезть не надо, а надо разбираться или с генераторами LLVM (что лучше) или самостоятельно делать компилятор из байт-кода LLVM в машинный код архитектуры.

Да, тут вы правы.

И не только тут.

Остальное тоже жесть.

По-моему это ваш комментарий лишён всякого смысла и не несёт никакой реальной пользы.
Могли бы не писать, всё-равно ничего умного не сказали.

RE: Общие вопросы - Added by krufter_multiclet over 8 years ago

Vladimir wrote:

Читаю и удивляюсь

phi-узлы (для обычной регистровой машины - это просто линейный блок с несколькими точками входа в него

Нет.

В LLVM нет некоторых методов оптимизации, которые нам нужны для генерации оптимального кода для Мультиклета

Так напишите. LLVM - открытая система.

проще залезть в исходиники clang и переделать компиляцию с байткода LLVM на компиляцию в ваш байткод

Автор, пиши ещё!

Остальное тоже жесть.

я LLVM знаю только поверхностно

Да, тут вы правы.

Vladimir, в отдельной ветке по LLVM буду стараться описывать все возникающие трудности в процессе разработки компилятора LLVM и вопросы выбора пути по которому идти.
Будем благодарны, если вы сможете чем-то помочь. Через неделю-две появится пища для обсуждения.

RE: Общие вопросы - Added by Anonymous over 8 years ago

байткода LLVM

Нет никакого байткода LLVM. Файлы .bc имеют формат биткода, это разные вещи.

Фразу "может будет" вы не заметили

Заметил. Нет, не может.

ваш комментарий лишён всякого смысла и не несёт никакой реальной пользы.

Я уже не говорю про ваш.

Если вы знаете, как там всё устроено

Всё не всё, но вероятно, больше, чем вы.

RE: Общие вопросы - Added by Yaisis over 8 years ago

Vladimir wrote:

Нет никакого байткода LLVM. Файлы .bc имеют формат биткода, это разные вещи.

Я привык называть байт-кодом, а детально в формат его хранения не вникал -- не вникал даже приблизительно, т.к. это пока не важно мне, да и вряд-ли понадобится.
Но хорошо, теперь буду обращать на это внимание и называть правильно.

Фразу "может будет" вы не заметили

Заметил. Нет, не может.

Да вы и не поняли в каком контексте шла речь.
А там речь шла не про LLVM, а про язык C/C++ и про его последние cтандарты, которые прописаны в коде clang`a -- речь шла о том, чтобы не писать компилятор с нуля, как они делают, а взять соответствующий код от-туда, тогда не придётся писать ни лексическия анализатор, ни формировать AST дерево и т.д. -- всё это есть в clang`е. Останется преобразовать ихнее AST в свой собственный байт-код(или бит-код), которым они занимались, а потом уже его оптимизировать и компилировать.
Это было, как вариант, но мне не нравится такое решение, я всегда был за "портирование" LLVM.

Данный вариант был предложен только потому, что у них были проблемы с LLVM, а таких умников, как вы, которые могли бы хоть чем-то помочь, тут не было.
Да и вы ничем не помогли, зашли сюда, чтобы поржать и показать, какой вы умный...

Я уже не говорю про ваш.

Нужен был совет про LLVM или компиляторы, а не ваши мысли по поводу того, что вы думаете о тех, кто тут пишет.

Всё не всё, но вероятно, больше, чем вы.

Вы не знаете, что я знаю и что не знаю. И даже не подозреваете.

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

RE: Общие вопросы - Added by Anonymous over 8 years ago

ОК, ваша позиция понятна.

RE: Общие вопросы - Added by Aha over 8 years ago

Владимир с фамилией, начинающейся на 'Т' и электронной почтой на gmail с первым символом 'a' решил удалить себя с данного форума и стать "Анонимом"... К сожалению, поздно, "рукописи" в Интернете уж точно не горят ;-)

RE: Общие вопросы - Added by krufter_multiclet over 8 years ago

Владимир очень сильно обиделся на комментарии в свою сторону, поэтому и удалился о чём свидетельствуют сообщения в новой статье http://geektimes.ru/post/264412/

RE: Общие вопросы - Added by VaalKIA over 8 years ago

krufter_multiclet wrote:

Владимир очень сильно обиделся на комментарии в свою сторону, поэтому и удалился о чём свидетельствуют сообщения в новой статье http://geektimes.ru/post/264412/

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

(26-50/59)