The OpenNET Project / Index page

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



"Новая криптографическая библиотека EverCrypt с математически..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Новая криптографическая библиотека EverCrypt с математически..." +/
Сообщение от Sw00p aka Jerom (?), 09-Апр-19, 18:41 
>трансляция отвечает за перевод данных из исходной формы в результирующую.

если "результирующую" понимать как конечный этап (машинные коды операций), то да это и есть по моему мнению процесс компиляции, объединяющий в себе понятия "итоговой трансляции", "сборки" (assembly - в прямом смысле) и собственно "связи" (linkage).

Хочу отметить, что я делаю именно акцент на "конечный этап трансляции" - это и есть компиляция. Вот такое строгое мое мнение понятия компиляции.

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

###
Сырбор всей дисскуссии начался с того, что "трансляция" (перевод) с одного исходного текста ЯП на другой исходный текст был назван как процесс компиляции. (Что по моему мнению - ложно. И попытаюсь это доказать в итоге.)
###

>Ты берёшь эти лабораторки и копируешь в один большой текст. Компиляция была? Была.

Нет, не была. Была "сборка" в выше указанном моем определении процесса компиляции.

>Компиляция была? Разумеется была. Она всегда есть! В данном случае с оптимизацией.

Нет, не была, таже самая "сборка". Оптимизацию объясню ниже.

>Аналог: компиляция выполнена с трансляцией (переводом).

Из моего определения процесса компиляции - "итоговая трансляция" (конечный этап).


>На выходе результат на другом языке. И только в случае трансляции получается ДРУГОЙ язык, например Vala => C.

И как я понял, в итоге по вашему мнению "процесс компиляции" есть процесс трансляции из языка A в язык B.

Отсюда, по вашему мнению, процесс трансляции (перевода) из Python в C - есть процесс компиляции, так ли это ? Если да, то приведу такой пример.

Допустим, есть множество языков вида L1, L2, L3 ... LN, где LN есть "результирующий язык" (машинные коды операций), а пронумерованные это прочие высокоуровневые ЯП. Введем оператор трансляции "->" (стрелочка).

Из вашего мнения следует L1 -> L2 - есть процесс компиляции, тогда L1 -> L1` (штрих) также есть процесс компиляции. L1` (штрих) - тут в роли процесса "обфускации" или же "рефакторинга", та же "оптимизация". И получается, что это так же трансляция если строго трансляцию не принимать как только L1 -> L2.


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

"для получения готового результата" - то есть исполняемого? Если да, то Python -> C, где тут "готовый результат"? Вы противоречите своему определению процесса компиляции.


>Но так как в кодогенерации компиляция и интерпретация не имеют смысла без трансляции, то компиляторы и интерпретаторы общепринято называются трансляторами.

Тут как-то сумбурно, кодогенерации это фактическая трансляция.


>Вот на это отличие обратил внимание Sw00p aka Jerom.
>У него пока тоже нет полного понимания, но можно было бы объяснить ему это по-человечески, не самоутверждаясь.

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

Если бы каждый шаг L1 -> L2 -> L3 ... -> LN и весь процесс трансляций в целом называть компиляцией, то зачем мы еще порождаем всякие понятия L1 -> L1` (штрих) как "обфускация", "рефакторинг", "оптимизация"?

Почему мы принимаем Java как "компилируемый язык"?

Пример:

Python -> Java -> Java-bytecode (конечный этап трансляции для JVM)

Этот пример имеет место быть, так как Java-bytecode тут конечный этап трансляции для JVM, и по моему мнению (когда конечный этап - это машинные коды операций), компиляция тут заключается только лишь в процессе трансляции Java -> Java-bytecode, но не Python -> Java. И эту компиляцию, для строгого отличия от "нативной" (Asm -> CPU Opcodes), я называю - "виртуальной компиляцией".

Тоже самое: C -> Asm -> CPU Opcodes, Asm -> CPU Opcodes - последняя стадия трансляции - компиляция, C -> Asm - просто трансляция (обычно говорят кодогенерация)

пс: всем спасибо за участие в дискуссии.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Новая криптографическая библиотека EverCrypt с математически..., opennews, 06-Апр-19, 12:22  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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