LINUX.ORG.RU

Хочу C++ без C++

 ,


0

2

Такие дела.
Безплюсового старшего брата сразу отметаем. Интерпретируемые/JIT-языки тоже отметаем. Языки типа D, в которых размер бинарника хелловорда около мегабайта отметаем так же.
Хотелось бы, что-то типа Python, но который не требует интерпретатора, как Cython, для своей работы.
Что там остается? Есть ли Путь? Сколько времени прошло с создания C/C++, появилась ли им вменяемая альтернатива?
Если писать с нуля транслятор Python (СТ) в код на C (не машинный, не llvm), какие там основные проблемы будут? Преобразование грамматик? Падение производительности? В чем основные сложности и примерно сколько времени займет реализация такого проекта? Кто-нибудь подобным занимался?



Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от anonymous

Не обязательно «процессора». Последовательность кодонов в ДНК-компьютере тоже программа.

Ну вот, не дал мне спросить про музыкальную шкатулку и станок Жаккарда.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

По сути это конечный автомат, с дополнительным обвесом.

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

Ты лучше поясни, почему следует считать его CPU-ядром ?

Потому что у него все равно есть набор инструкций. Только они сразу являются control vector, без необходимости декодирования. И структура этого control vector выводится автоматически, вместо придуманной человеком системы команд. Но главное остается - есть где-то память (ram или rom, по сараю), где последовательно лежат инструкции, управляющие этим самым FSM, который их по очереди дергает.

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

anonymous
()
Ответ на: комментарий от anonymous

Откуда у тебя такой ужас перед soft cores? Ты вот, говорят, всякие AVR любишь. Так вот, представь себе, они в разработке без FPGA вообще не обходятся. Причем, хи хи, реализация на FPGA работает ровно на тех же частотах что оно же в кремнии. Только чуть больше энергии потребляет. И стоит раз так во много чуть больше дороже. А так - разницы никакой.

Нет никакого ужаса, и с ПЛИС я работал, конечные автоматы делал, даже один раз цифровую ФАПЧ сделал...

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

1. Берем CAD-файлы, 2. делаем G-code для фрезеровки пресс-форм. 3. G-code - это последовательность инструкций. 4. ?????? 5. ПРОГРАММА!!!

Аналогичная история с pcb и gerber-файлами.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

1. Берем CAD-файлы, 2. делаем G-code для фрезеровки пресс-форм. 3. G-code - это последовательность инструкций. 4. ?????? 5. ПРОГРАММА!!!

Ну да. Оно *может* синтезироваться в программу. А может и не синтезироваться. Исходник программой не является, а результат синтеза может и являться.

G-коды - последовательность инструкций. А вот маска для фотолитографии, например - не последовательность инструкций и не программа.

Аналогичная история с pcb и gerber-файлами.

Опять же, если у тебя эти gerber файлы синтезируются в G-коды для CNC, тогда результат - программа. А если в маску для фотопечати - то программы нигде в цепочке нет. Ты PCB травил с помощью масок, распечатанных на лазернике?

anonymous
()
Ответ на: комментарий от anonymous

Ты PCB травил с помощью масок, распечатанных на лазернике?

Не совсем так, я доработки, сделанные на плате вносил в проект ПП для выпуска следующей версии.

Аналогично по ASM-листингу правят исходники на ЯПВУ.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от anonymous

А если в маску для фотопечати - то программы нигде в цепочке нет.

На самом деле есть: фотошаблон делает машина, которая выполняет последовательность инструкций для «рисования» шаблона.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

Ну вот, ты еще вспомни, что postscript для печати маски на лазернике это «программа».

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

anonymous
()
Ответ на: комментарий от anonymous

Спор ни о чем.

Спор, на самом деле, чисто лингвистический, не получается на русский корректно перевести все.

Конечный продукт - bitfile - программой не является.

Можно ссылку на отраслевой стандарт, где написано, что «не является»?

Даже в английской википедии пишут:

Computer software also called a program or simply software is any set of instructions that directs a computer to perform specific tasks or operations.

И только потом переформулируют его в узком смысле как поток команд процессора...

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

И да я нашел, что такое программа:

ГОСТ 19781-90
1. Программа - Данные, предназначенные для управления кон­кретными компонентами системы обработки ин­формации в целях реализации определенного ал­горитма.

Так что ваше определение программы слишком узкое. /thread

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

is any set of instructions that directs a computer to perform specific tasks or operations

Где ты в bitfile нашел «set of instructions»?!? Это ЧЕРТЕЖ нах.

anonymous
()
Ответ на: комментарий от shkolnick-kun

ГОСТ

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

anonymous
()
Ответ на: комментарий от anonymous

Ты по чертежу лопатку детскую для копания в снегу на уроке труда делал?

А я делал, чертеж лопатки - набор инструкций по производству лопатки.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от anonymous

Хотел бы я питаться колбасой, реально сделанной по советским ГОСТам, меньше глутамата натрия и прочего соевого белка с пальмовым маслом употребил бы наверное...

shkolnick-kun ★★★★★
()
Ответ на: комментарий от shkolnick-kun

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

anonymous
()
Ответ на: комментарий от anonymous

Чертеж это не набор инструкций. Порядок сборки и тех. процесс производства деталей чертеж не дает, только конечный результат.

Во-первых, там пишут материалы и есть спецификация в которой перечислены все детали, приведены требования к обработке поверхностей и т.д.

А во-вторых порядок действи сейчас и в экзешнике не пишут, ибо суперскалярность во все поля.

Чет припекло мне от вашего с tailgunner-ом правового нигелизьма, и нашел я швитое западное определение понятия «программа»:

ISO/IEC 2382-7:2000
01.05.01. Program; Computer program
Syntactic unit that conforms to the rules of a particular Programming language (01.05.11) and that is composed of Declarations (15) and Statements (15) or Instructions (07) needed to solve a certain function, task, or problem.

То есть набор инструкций - опять частный случай, такие дела.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от anonymous

Програма пятилетки тоже програма. Сплошные declarations. Ты про слово «software» читай.

Пожалуйста:

01.01.08. Software
Any part of Programs (01.05.01), Procedures (15), rules and associated documentation of an Information processing system (01.01.12).

«Язык программирования» читать?

shkolnick-kun ★★★★★
()
Ответ на: комментарий от JN

Размер бинарника хелловорда в один метр показывает несерьезность подхода.

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

mongo
()
Ответ на: комментарий от shkolnick-kun

нашел я швитое западное определение понятия «программа»:

Да, это ты с козырей зашел. Кстати, ты на эту святыню только молишься, или жертвы тоже приносишь?

Syntactic unit that conforms to the rules of a particular Programming language (01.05.11) and that is composed of Declarations (15) and Statements (15) or Instructions (07) needed to solve a certain function, task, or problem

Окей, я не стану придираться к разнице между PL и HDL, ты только скажи - инструкции _чему_ содержатся в исходниках VHDL?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Кстати, ты на эту святыню только молишься, или жертвы тоже приносишь?

Не, религия это не ко мне.

инструкции

of Declarations (15) and Statements (15) or Instructions (07)
Statements (15) or Instructions (07)
or

Так понятнее?

разнице между PL и HDL

01.05.11. Programming language
Artifical language (01.05.10) for expressing Programs (01.05.01).

HDL это подмножество PL.

Ну и чтобы не возникало вопросов по поводу того, что считать системой обработки информации:

01.01.12. Information processing system
One or more Data processing systems (01.01.11) and devices, such as office and communication equipment, that perform Information processing (01.01.06).

Система обработки данных:

01.01.11. Data processing system; Computer system; Computing system

One or more Computers (01.03.04), Peripheral equipment (01.03.09), and Software (01.01.08) that perform Data processing (01.01.05).

Note: Data processing systems may also include Information processing (01.01.06) capability.

Компьютер:

01.03.04. Computer
Functional unit (01.01.45) that can perform substantial computations,including numerous arithmetic operations and Logical operations (02) without human intervention.

Note 1: A computer may consist of a stand-alone unit or several interconnected units.
Note 2: In English, the term “computer” usually refers to a Digital computer (01.03.05).

Цифровой компьютер:

01.03.05. Digital computer

Computer (01.03.04) that accepts, processes, and produces Digital data (05).

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

И да, я лажанулся с номером стандарта: искал ISO/IEC 2382-7:2000, а нашел и привел цитаты из ISO/IEC 2382-1:1993, это фактически разные части ISO/IEC 2382, сейчас все эти стандарты заменили на один ISO/IEC 2382:2015, его текста я в свободном доступе не нашел.

За сей прискорбный факт прошу меня извинить. Не судите строго :)

Всех носителей военных профессий независимо от пола с наступившим праздником!

shkolnick-kun ★★★★★
()

С жиру бесимся?

anonymous
()

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

Rust подойдет. Вполне себе годный язык. Но тут надо идти от задачи. Если нужно что-то python-подобное - посмотрите на Nim. Вполне интересно.

Транслятор в Pure C... Сложность в том, что вы должны хорошо знать Pure C. Иначе будет падение производительности, утечка памяти...

silver-bullet-bfg ★★
()
Ответ на: комментарий от silver-bullet-bfg

А задача какая?

Русским языком же написано:

JB>размер бинарника хелловорда

Ещё вопросы есть?

VM, которая даёт максимальную переносимость без особого гемерроя

Всегда было интересно, куда вы там свои Джава-проги переносите.

Если нужно что-то python-подобное - посмотрите на Nim

В каком месте оно питон-подобное? ИМО, там от Питона только отступы.

Сложность в том, что вы должны хорошо знать Pure C

Что его там знать, семантика же элементарная. Хотя вообще, чтоб годный транслятор сделать, кучу всего надо знать, и Pure C, пожалуй, самое простое из этого.

anonymous
()
Ответ на: комментарий от anonymous

Ещё вопросы есть?

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

Всегда было интересно, куда вы там свои Джава-проги переносите.

Я лично переношу Python-приложения для web'a, аналогично - проги на TKinter писали для переносимости.

В каком месте оно питон-подобное? ИМО, там от Питона только отступы.

Если вы говорите о том, что дизайн у Nim все же есть - то да, с Python3 нет ничего общего. В последнем отутствие дизайна и вменяемой поддержки парадигм.А если говорить о синтаксисе - то вполне себе похожие языки.

Что его там знать, семантика же элементарная. Хотя вообще, чтоб годный транслятор сделать, кучу всего надо знать, и Pure C, пожалуй, самое простое из этого.

Семантика? Быть может, но хаков на Pure C применяется сильно много. Сокращенный синтаксис еще тот мазохизм (а ведь K&R говорили, что если код стал не понятным для «новичка» - это плохой код, но что могут знать создатели языка, да?). Да и Pure C - хоть и самый простой, но не самый безпроблемный вариант. Транслятор в Pure C код проще написать на каком-нибудь Lisp или Tcl.

silver-bullet-bfg ★★
()

Очередной шизофреник, несмогший в плюсы.

anonymous
()
Ответ на: комментарий от anonymous

А если в маску для фотопечати - то программы нигде в цепочке нет.

нет, есть

Ты PCB травил с помощью масок, распечатанных на лазернике?

ну ок, отпечатай теперь это в PostScript и открой его в блокноте. видишь — это сорцы на форте, на самом деле? инструкции для RIP процессора в принтере.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.