На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
  
> Цэ vs LLVM , рассуждения ...
    Буэнос диас, амигос!


    Наверное у всех прогеров, использующих язык программирования Цэ, на слуху избитое утверждение, а-ля "си - это высокоуровневый ассемблер". И таки да, сложно не согласиться. Все управляющие операторы легким взмахом руки можно перевести в небольшие ассебмлерные конструкции. Как говорится "иду я по полю с автоматом, никого не трогаю ... и вдруг из-за угла выезжает танк!". И на броне у него написано LLVM...

    Согласно последним исследованиям британских ученых такие языки программирования как C++, Go, Haskell, Fortran, rust, Javascript, Ruby, C# уже переметнулись на "сторону врага" (LLVM). Самое интересное, так и Цэ тоже с ними!!!

    Собственно, вопросы!

    1) Как вы считаете, нужно ли язык Цэ лишить права называться "высокоуровневый ассемблер" за предательство?
    2) Ну почему, ну почему LLVM, а не бэкэнд-прослойка в виде Цэ? Почему LLVM?!! :wall:

    Общаемся аккуратно и по делу, название темы уже "прямо трИсет" :) модераторскую руку перенести тему в холивары.
    Но она еще не там. И так хочется услышать сперва именно сишников. Понеслась.

    Всем - счастья! :victory:
      1) Не нужно. LLVM вполне себе низкоуровневый язык виртуальной машины а никак не "высокоуровневый ассемблер"
      2) Потому что см. ответ на п. 1
      И где можно почитать про этот Цэ?
        Цитата JoeUser @
        Go

        В смысле? У них свой компилятор.

        Цитата JoeUser @
        JavaScript

        В смысле? JS интерпретируемый.

        Цитата JoeUser @
        Ruby

        В смысле? Ruby интерпретируемый/компилируемый-в-байткод, давно есть, например, JRuby под JVM, хоть и мало кому нужный.

        Цитата JoeUser @
        C#

        В смысле? C# компилируется в байт-код виртуальной машины dotNET, при чём тут LLVM?

        Цитата JoeUser @
        уже переметнулись на "сторону врага" (LLVM)

        Врага чего?

        Цитата JoeUser @
        Ну почему, ну почему LLVM, а не бэкэнд-прослойка в виде Цэ?

        А зачем бэкэнд-прослойка в виде Цэ?

        Цитата JoeUser @
        Почему LLVM?!

        Потому что подошло.

        Вообще не понимаю, из-за чего эта истерика?

        Добавлено
        Цитата JoeUser @
        Все управляющие операторы легким взмахом руки можно перевести в небольшие ассебмлерные конструкции.

        А всякие оптимизации кто делать будет? А в ассемблерные инструкции под какую архитектуру процессора? Что-то лёгкий взмах уже не такой лёгкий оказывается.
          Цитата amk @
          И где можно почитать про этот Цэ?

          Например тут.

          Добавлено
          Цитата korvin @
          В смысле? У них свой компилятор.

          Пока воттак. Про остальные ЯП прошу отнестись к гуглению более серьйозно! 8-)
            Цитата JoeUser @
            Пока воттак

            Как «вот так»? Это сторониий проект. Который, к тому же, судя по датам коммитов, умер 4 года назад. Официальный компилятор Go не использует LLVM.

            Цитата JoeUser @
            Про остальные ЯП прошу отнестись к гуглению более серьйозно!

            Отнесись, в чём проблема?
              JoeUser, смотри на LLVM как на переносимый ассемблер. По сути так и есть, т.к. бэкенд-компайлер из LLVM в натив входит в любую компилирующую среду разработки, использующую LLVM как промежуточную платформу.
                Цитата Qraizer @
                JoeUser, смотри на LLVM как на переносимый ассемблер.

                Да, так оно и есть. Но почему оно живет, при живом ЦЭ?!
                  Джо, отмодерась себя сам. Нахера холиварной х..нёй забивать тематику?
                    LMM, хорошо, а теперь давай говори по теме :)
                      А в чем собно холивар? Кто против кого?
                      Сообщение отредактировано: applegame -
                        Цитата JoeUser @
                        Например тут.
                        Я про сам язык, а не про обсуждение его использования в проектах, написанных на совсем другом языке.
                          Цитата applegame @
                          А в чем собно холивар? Кто против кого?

                          Про нужность или ненужность LLVM. Есть же Цэ?!
                            Разного уровня же вещи.
                            Простой пример. SPIR-V транслируется один в один и в обе стороны с LLVM. Для си такое вряд ли бы стало возможным. Можешь сравнить с встроенным C в open cl, как вариант.
                              ой мама. Набросай-ка jit на C, а потом рассказывай про ненужность LLVM.
                              LLVM -- фреймворк для построения компиляторов. C - компилируемый язык программирования, по-моему, они созданы друг для друга. И ещё много для чего
                                Чота какой-то крайне унылый вброс. Как будто вбрасывающий сделал это от отчаяния, в попытке хоть как-то расшевелить форум.
                                  M

                                  LLM, покайся! Не знаю, Борис ли ты - но ты непарв!
                                  Сообщение отредактировано: JoeUser -
                                    Цитата applegame @
                                    Чота какой-то крайне унылый вброс.

                                    Ну што?!! >:( Вторая часть марлезонского балета, господа присяжные заседатели!

                                    С вашего позволения - командовать парадом буду я (L) ...

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

                                    Итак ... читаем "LLVM (ранее Low Level Virtual Machine[5]) — универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями". Да, действительно, когда-то, когда многие из спопящих заканчивали средние классы не мение средней школы, такие системы на базе RISC-технологии, как UltraSPARC - считались просто божеством тогдашних технологий. Я не ёрничаю, современный комп от интела, стоящий рядом в моей лабе имел целых!!! 16 Мегабайт оперативы. Я боюсь быть позорно неточным, в той лабе я поработал по переводу месяца три, но на слуху отложилось, что лаба тестировала некий симбиоз аппрататно-программного АЛУ на 64 RISC-процах. Для точночти - примерно 1993 год, тогда еще Институт Технической Кибернетики Академии Наук БССР (позже уже РБ). Исторический экскурс заканчиваем ...

                                    Итак LLVM и подход-RISC

                                    Чем же это было революционно в то время? Если грубо - упрощаем набор команд (не по количеству, а по скорости исполнения, по тактам), строим и оптимизируем кэширование, уже потом - строим предугадывание. Не, чо, все ровно!!! На то время модно и современно. LLVM это все патриотично впитал, нет базара!

                                    А что сегодня?

                                    А давно уже сегодня появилась тьма спецификаций типа SSE и иже с ней куча версий до сего дня. Стопэ, товарисчи, а туда ли мы идем??! Сперва была попытка все раздербанить на "сложение/вычитание", а тут все наоборот, штоле?!!! Какие-то скалярные типы (команды а ля CVTSI2SS, CVTSS2SI, CVTTSS2SI), упакованные типы (команды а-ля CVTPI2PS, CVTPS2PI, CVTTPS2PI), почему-то к кэшу дали доступ (команды а-ля MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE), что за бесовщина?! Омериканская холодная война в области IT?

                                    Меня тут типа спрашивали

                                    Цитата
                                    ой мама. Набросай-ка jit на C, а потом рассказывай про ненужность LLVM

                                    А в чем проблема? Сам LLVM на машинном коде писан? Все конструкции LLVM можно реализовать на Цэ. Только вот возникает вопрос ... Почему некоторая часть IT-комьюнити уже некоторое время задается вопросом "а не создать ли нам аппаратный Forth-процессор?". Я понимаю, лавэ, то, се, интересы жЫрных компаний ... Но тренд каков? Опять не в пользу RISC-подхода! Я человек не обремененный социальными обязательствами, могу дополнить - Цэ универсален! Можно и в системную область влезть, можно и в предметную и выше.

                                    Цитата Qraizer @
                                    JoeUser, смотри на LLVM как на переносимый ассемблер. По сути так и есть, т.к. бэкенд-компайлер из LLVM в натив входит в любую компилирующую среду разработки, использующую LLVM как промежуточную платформу.

                                    Да, дружище - ты прав! На счет LLVM. Но и Си - "как на переносимый ассемблер". Не? А ведь он не на столько "высокоуровнее"))) Отношу тебя к стате в вики по LLVM (по типам тамошних данных, операциями с памятью, операциям) ... Ну вот скажи чо, это Цэ не может? (про реализацию компайлеров не говори - прокляну!)

                                    С бестами и регардами,
                                    JoeUser

                                    .
                                      Давай знаешь что сделаем? Ты можешь озвучить один небольшой тезис(одно-два предложение)? И попробуем обсудить только его. Для начала.
                                      А то тяжело.

                                      Добавлено
                                      Или давай рассмотрим один из аспектов llvm - готовая инфраструктура для backend компилятора. Чем активно пользуются. Один из примеров - kotlin native, который не стал городить собственный бэкенд, а получил его на халяву (ну почти).
                                      user posted image
                                        Цитата JoeUser @
                                        Все конструкции LLVM можно реализовать на Цэ.
                                        Любую инструкцию можно реализовать на любом языке. Причём Си тут не слишком и выделяется. Так что…
                                        Цитата JoeUser @
                                        Почему некоторая часть IT-комьюнити уже некоторое время задается вопросом "а не создать ли нам аппаратный Forth-процессор?".
                                        Об аппаратном forth-процессоре речь ведётся с момента появления самого языка FORTH. А это 70-е годы - более 40 лет.
                                        Точно так же велась речь о создании LISP-процессора.
                                        И, внимание, оба были в своё время созданы. Тут вопрос в другом, почему сейчас про них все напрочь позабыли и поднимают вопрос о создании такого процессора снова?

                                        Си получил такое звание - "переносимый ассемблер" - потому, что давал сравнимые с автокодами возможности по доступу к аппаратуре ЭВМ, и в то же время мог был достаточно эффективно реализован на всех существующих платформах.
                                          Цитата amk @
                                          Любую инструкцию можно реализовать на любом языке.

                                          Вот только не надо бездоказательных инсинуаций!!! Не видел драйвера (в виде "любых инструкций") на языке Джава.

                                          Цитата amk @
                                          Об аппаратном forth-процессоре речь ведётся с момента появления самого языка FORTH. А это 70-е годы - более 40 лет.
                                          Точно так же велась речь о создании LISP-процессора.

                                          Можно ссыль? Ни разу не слышал об аппаратном Форт-процессоре :)

                                          БИНГО!

                                          Цитата amk @
                                          Си получил такое звание - "переносимый ассемблер"

                                          А што же такое тогда LLVM? :lol:

                                          D_KEY, давай на затравки просто скромно изменим на твоей схеме - заменим блок "LLVM оптимизатор" на схожий "Си оптимизатор"... Неужели синтаксис Си так убог по сравнению с синтаксисом LLVM??? :-?
                                            Цитата JoeUser @
                                            D_KEY, давай на затравки просто скромно изменим на твоей схеме - заменим блок "LLVM оптимизатор" на схожий "Си оптимизатор"...

                                            Си оптимизатор намного сложнее. А остальные части чем заменить? Вон в js как компилировать будешь? :D

                                            Пример с opencl и spir-v проигнорировал?
                                              Цитата JoeUser @
                                              Да, действительно, когда-то, когда многие из спопящих заканчивали средние классы не мение средней школы, такие системы на базе RISC-технологии, как UltraSPARC - считались просто божеством тогдашних технологий

                                              В смысле «считались»? SPARC и сейчас вполне хорошие процы, не то что эти ваши meltdown'утые интели-шминтели.

                                              А RISC и сейчас популярная архитектура:
                                              Цитата
                                              In the 21st century, the use of ARM architecture processors in smartphones and tablet computers such as the iPad and Android devices provided a wide user base for RISC-based systems. RISC processors are also used in supercomputers such as Summit, which, as of November 2018, is the world's fastest supercomputer as ranked by the TOP500 project.

                                              https://cs.stanford.edu/people/eroberts/cou.../risc/risccisc/

                                              Ну и Интел от чистого CISC давно перешёл к гибридной микроархитектуре с RISC'ом внутри.
                                                Вообще, какое-то странное противопоставление. С - это язык. LLVM - это нечто гораздо большее - это целая инфраструктура.
                                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                0 пользователей:


                                                Рейтинг@Mail.ru
                                                [ Script execution time: 0,0606 ]   [ 16 queries used ]   [ Generated: 19.03.24, 09:05 GMT ]