LINUX.ORG.RU

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

 ,


0

2

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



Последнее исправление: cetjs2 (всего исправлений: 2)
Ответ на: комментарий от shkolnick-kun

Дорогой tailgunner, зачем ты так безжалостно удалил пост анона? Он забавный же! С кем мне теперь беседовать на тему программирования ПЛИС?

И да, на тему программирования АВМ и ПЛИС в западных источниках:

https://en.wikipedia.org/wiki/Analog_computer#Electronic_analog_computers

The FERMIAC was an analog computer invented by physicist Enrico Fermi in 1947 to aid in his studies of neutron transport. Project Cyclone was an analog computer developed by Reeves in 1950 for the analysis and design of dynamic systems. Project Typhoon was an analog computer developed by RCA in 1952. It consisted of over 4000 electron tubes and used 100 dials and 6000 plug-in connectors to program.

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

https://en.wikipedia.org/wiki/Field-programmable_gate_array#FPGA_design_and_p...

National Instruments' LabVIEW graphical programming language (sometimes referred to as «G») has an FPGA add-in module available to target and program FPGA hardware.

More recently, OpenCL is being used by programmers to take advantage of the performance and power efficiencies that FPGAs provide. OpenCL allows programmers to develop code in the C programming language and target FPGA functions as OpenCL kernels using OpenCL constructs.

Wow! ПЛИС там тоже программируют!

Не то что в странах третьего мира, которые не могут в ПЛИС.

З.Ы.РФ кстати в ПЛИС может, пока в основном по лицензии, но это дело наживное, когда-то авиадвигатели по американской лицензии выпускали.

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

зачем ты так безжалостно удалил пост анона?

Там написано.

Wow! ПЛИС там тоже программируют!

Это еще что... людей программируют (власти скрывают, как обычно).

Еще раз - речь не о «программировании» (под которым, как ты знаешь, может пониматься просто запись в programmed ROM), а о программах. Программа - последовательность инструкций вычислителя.

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

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

То есть программа на LabView, выполняемая на x86 это программа, а на Xilinx spartan нет?

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

Аледятел, OpenCL синтезируется в кучку CPU cores + код. Так что конечно же программируют, когда на ПЛИС синтезируется программируемое устройство.

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

Не, ну ты тупой! Ты в том же labview можешь набросать схемку из дискретных компонентов, которую потом сам и спаяешь. Это тоже «программа» будет? Или программа это только проводки в breadboard, а как только припаяли намертво оно стало «железом»?

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

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

То есть программа на LabView, выполняемая на x86 это программа, а на Xilinx spartan нет?

Всё, что исполняется на x86 - это программа, по определению программы. Прошивка Spartan - это тупо вентили (gateware, как говорят некоторые). Наверное, можно вкрячить туда Microblaze с программой, но программой будет только последовательность инструкций Microblaze.

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

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

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

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

Это программно-аппаратный комплекс, блин. Думал ты должен быть последним человеком, которому это надо объяснять.

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

А если в одной программе врисованы функциональные блоки как ПЛИСовские, так и компьютерные, тогда это что?

Программа - это последовательность инструкций. Как ты умудрился туда что-то врисовать - ХЗ.

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

https://www.altera.com/content/dam/altera-www/global/en_US/pdfs/literature/wp...

Kernel functions can be transformed into dedicated and deeply pipelined hardware circuits that are inherently multithreaded using the concept of pipeline parallelism. Each of these pipelines can be replicated many times to provide even more parallelism than is possible with a single pipeline. Altera's OpenCL Compiler translates an OpenCL kernel to hardware by creating a circuit that implements each operation.

Нет, нету там никаких CPU-cores, решение там аналогичное отечественному, только менее масштабируемое.

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

Если я эту схемку интегрирую с приложением LabView, то то, что нарисовани в LabView, это будет скорее «модель идентификации», естественно она будет программной :)

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

Нет, нету там никаких CPU-cores

Еще как есть. NISC-ядра [1] это все равно CPU-ядра, как бы там они в целях маркетинга их не называли. Их реализацию я изнутри видел, это именно что специализация NISC-ядра относительно произвольного OpenCL кода. Только в самых вырожденных случаях (opencl kernel без какого либо control flow) этот синтез вырождается в одинокий pipeline без контроллирующих FSM.

[1] https://en.wikipedia.org/wiki/No_instruction_set_computing

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

Если я эту схемку интегрирую с приложением LabView

Что значит «интегрируешь»? ADC на входе и DAC на выходе пришьешь? Ну не знаю, тогда у тебя и механические часы-ходики на стене тоже «программа», если ты с них показания веб-камерой снимаешь и в LabView анализируешь.

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

А прошивка, это не железо.

Вот жеж ты упертый. Почему это «не железо»?

То есть, воткнутые в breadboard проводки это тоже не железо, а если припаять, то сразу «железо»?

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

LabView - имеет в своем составе графический ЯПВУ, программы там рисуются.

Это dataflow язык. Он совершенно не обязательно нуждается в «исполнителе», может синтезироваться в чисто аппаратную реализацию без каких либо Тьюринг-полных элементов.

Итак, повторяю свой вопрос - ядро Intel это «софт» или «железо»?

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

LabView - имеет в своем составе графический ЯПВУ, программы там рисуются.

Ты троллишь или тупишь? Еще раз: всё, что исполняется на x86 - программа по определению.

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

Про LV я знаю, приходилось работать, хоть и противно.

Итак, повторяю свой вопрос - ядро Intel это «софт» или «железо»?

В каком виде?

Если в виде HDL-файлов, то это программа, по которой будет синтезировано железо либо прошивка (б-же упаси!).

Если в виде куска кремния, то это железо.

Если в виде битстрим-файла (б-же упаси!), то это firmware, как и .hex-файл с прошивкой МК.

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

Ты троллишь или тупишь? Еще раз: всё, что исполняется на x86 - программа по определению.

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

Процессор, это только частный случай ЭВМ.

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

Я просто считаю

Ну так ты один такой. Весь остальной мир считает иначе.

последовательность инструкций процессора.

Не обязательно «процессора». Последовательность кодонов в ДНК-компьютере тоже программа. Однако, обязательно последовательность и обязательно инструкций. Статическая схема программой не является.

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

Если в виде HDL-файлов, то это программа, по которой будет синтезировано железо либо прошивка (б-же упаси!).

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

Ну так вот, HDL исходники это тоже тупо чертеж.

Если в виде битстрим-файла (б-же упаси!),

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

И расскажи уже, чем bitstream так уж фундаментально отличается от набора файлов tapeout? Те, если твоей логике следовать, тоже «программа» для управления последовательностью фотолитографии.

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

Ну так вот, HDL исходники это тоже тупо чертеж.

Ему это уже говорили - без толку.

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

NISC

По сути это конечный автомат, с дополнительным обвесом. Ты лучше поясни, почему следует считать его CPU-ядром ?

shkolnick-kun ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от 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

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

нет, есть

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

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

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