LINUX.ORG.RU

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

 ,


0

2

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



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

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

А vala - вообще маргинальное недо-поделие...

Почему? Вполне годный язык.

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

ПМСМ, это ПО ПЛИС, — это софт

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

FreeLiver ★★★
()

Objective-C же

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

нет гибкости софта.

Гибкость примерно такая же, как у прошивки для микроконтроллера.

Насколько я помню, сейчас у Xilinx есть Nonvolatile FPGA, которые имеют на борту SPI flash для хранения прошивки, которая доступна для доступа из самой прошивки, через SPI...

Соотвтственно, можно делать обновление прошивки почти на лету (reset все таки нужен), ее регенерацию по прошествии 10 лет, например...

не поместится в кристалл

Да, как и любая другая прошивка.

Прошивка делается гораздо дольше

Да, но по сравнению со временем тестирования, это мелочи.

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

не поместится в кристалл.Да, как и любая другая прошивка.

Ну если у микроконтроллера за 5 баксов 1М флеша ты долго будешь писать прежде чем используешь всю. А вот упереться в лимит ячеек FPGA можешь в любой момент при добавлении фичи и все приехали. Опять же из-за специфики ты врядли сможешь использовать 100% ресурсов ПЛИС в отличие от флеша МК. Самое главное отличие - это то что будет исполнять «прошивку». ПЛИС мало похожа на процессор или микроконтроллер. И если я назову человека, который постоянно делает сложные прошивки программистом, он обидится скорее всего.

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

Ну если у микроконтроллера за 5 баксов 1М флеша

Это где ж такое? Покажи!

ПЛИС мало похожа на процессор

Да, у самого был мощный когнитивный диссонанс от FOR в AlteraHDL.

А вот упереться в лимит ячеек FPGA можешь в любой момент при добавлении фичи и все приехали.

Так же, как и в 32к флеша в stm8l151c6t6, и не надо мне говорить про замену МК, пример из жизни, изделие массовое (>10к в год), замена влетит в копеечку.

он обидится скорее всего.

баттхерт_это_грех.пнг

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

Это где ж такое? Покажи!

stm32f405rgt6. Больше спорить не буду, ибо бесполезно. Тебя стрелок вопросами наводящими пытался заставить задуматься, но тебе больше нравиться спорить видимо...

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

stm32f405rgt6

http://www.elitan.ru/price/index.php?find=stm32f405rgt6&delay=-1&mfg=...

Это не 5$

пытался заставить задуматься

О чем? О том, что «прошивка для ПЛИС, — это не программа»? Ну так я об этом задумался еще до прошлого крысиса, и пришел к выводу, что таки параллельная программа...

А вот о причинах задержек и фейлов в разработке я таки задумался...

И пришел к выводу, что автоматизация (настоящая, а не та, что сейчас) спасет отца русской демократии.

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

Это не 5$.

Я там беру комплектуху порой ). 535р это меньше 7$ в России. Здесь НДС и маржа торговца сидят. Для китайцев в Шэнчжене, которые что-то производят массово, он обойдется дешевле 5$.

То что ты можешь делать прошивки ПЛИС не делает их софтом. Это говорит о том что ты вышел за пределы профессии программера, что само по себе неплохо.

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

То что ты можешь делать прошивки ПЛИС не делает их софтом.

Это мнение устарело, как минимум потому, что:

В качестве элементной базы РВС используются программируемые логические интегральные схемы (ПЛИС) высокой интеграции (в английской аббревиатуре – FPGA (Field Programmable Gates Array)),

Трудности программирования РВС позволяет преодолеть специальный программный комплекс

Средства разработки прикладных программ включают: интегрированную среду разработки прикладных программ Argus IDE, поддерживающую язык высокого уровня COLAMO, язык ассемблера Argus; трансляторы языков COLAMO и Argus; среду разработки схемотехнических решений Fire!Constructor, синтезирующую вычислительные структуры для всех ПЛИС вычислительного поля.

Среда Fire!Constructor позволяет полностью исключить схемотехника из процесса создания прикладных программ для РВС.

что ты вышел за пределы профессии программера

Я не вышел, я зашел :)

Мне вообще аналоговая схемотехника нравится...

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

О том, что «прошивка для ПЛИС, — это не программа»? Ну так я об этом задумался еще до прошлого крысиса, и пришел к выводу, что таки параллельная программа...

Ну и в какой момент оно перестает быть программой? Когда намертво в одноразовую PLD прошивается - еще программа, или уже нет? Когда тот же самый netlist синтезируется в силиконе - это еще программа, или уже нет?

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

Ну и в какой момент оно перестает быть программой?
Когда намертво в одноразовую PLD прошивается - еще программа, или уже нет?

И тут парсер снесло. Можешь более ясно выразить свое мнение: «программа или нет»?

Я считаю, что программа, как и программа, зашиваемая в «одноразовый» микроконтроллер (дада, бывают и такие).

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

И тут парсер снесло.

Еще раз, медленнее: тот же самый netlist, синтезированный под одноразовую, нестираемую PAL. Это еще программа, или уже тупо circuit? Перемычки то там погорели, никакой другой «программы» туда не запишешь.

Можешь более ясно выразить свое мнение: «программа или нет»?

Я считаю, что ничего общего ни с какими программами прошивка FPGA не имеет, если только она не содержит достаточно сложного процессорного ядра и кода под него. Только в этом случае та часть этой прошивки, которая код, и будет программой. Все остальное - тупо электическая цепь.

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

ЗЫ: а электрическая цепь, которую ты на breadboard собираешь - она тоже «программа»? Раз ее «перезаписать» можно?

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

Прошитая ПЛИС - это аппаратное обеспечение вычислительной системы.

Прошивка, которую туда залили, - программа, по которой происходит сборка схемы, которая работает в ПЛИС.

То что ты при создании этой программы использовал редактор схем из Quartus, а не редактор ЯПВУ COLAMO из Argus IDE, не делает прошивку аппаратным обеспечением ВС.

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

а электрическая цепь, которую ты на breadboard собираешь - она тоже «программа»?

ЭНИАК так и программировали, до 1948 года, потом приделали перфокарты.

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

Прошивка, которую туда залили, - программа, по которой происходит сборка схемы, которая работает в ПЛИС.

Твои определения бесконечно далеко от общепринятых. Зачем ты их придумал? Назови четко свои критерии, где у тебя заканчивается электрическая цепь и начинается софт.

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

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

Электрическая цепь, это транзисторы в микросхеме, это заряды на плавающих затворах флеш-памяти и т.д.

А прошивка, это не электрическая цепь. Это просто исполняемый файл, набор бит. Понимаешь?

Главное отличие прошивки ПЛИС от прошивки микроконтроллера это среда выполнения.

В одном случае это процоссорное ядро, которое выполняет операции последовательно.

В другом случае это матрица логических элементов со свичами, которая выполняет операции параллельно.

И да, у меня есть встречный вопрос: а аналоговые вычислительные машины программируют, или собирают?

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

Это просто исполняемый файл, набор бит.

Нет. Это набор бит, который переключает вентили в электрической цепи, один раз, при загрузке. Какой такой в сраку «исполняемый»? Где там «исполнитель»?

Понимаешь?

Понимаю, что ты бредишь.

Главное отличие прошивки ПЛИС от прошивки микроконтроллера это среда выполнения.

Чухня. Никакой такой «среды выполнения» нет.

Схема, глядя на которую ты проводки в breadboard втыкаешь - это типа тоже «прошивка», а ты - «исполнитель»?

а аналоговые вычислительные машины программируют, или собирают?

Программируемых аналоговых машин, насколько я помню, не существовало. Все были фиксированные.

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

ЗЫ:

В другом случае это матрица логических элементов со свичами, которая выполняет операции параллельно.

Никаких таких «операций» никто не выполняет. Bitfile тупо переключает вентили для routing layers и один раз намертво прописывается в LUT. Никаких таких последовательностей инструкций для исполнения, последовательно ли, параллельно ли, там нет и не может быть. Это просто СХЕМА соединения элементов.

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

Твои определения бесконечно далеко от общепринятых. Зачем ты их придумал? Назови четко свои критерии, где у тебя заканчивается электрическая цепь и начинается софт.

То что в «отечественной» среде бытует мнение, навязанное криво переведенной западной литературой меня не волнует.

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

Ошибаешься.

Никаких таких «операций» никто не выполняет. Bitfile тупо переключает вентили для routing layers и один раз намертво прописывается в LUT. Никаких таких последовательностей инструкций для исполнения, последовательно ли, параллельно ли, там нет и не может быть. Это просто СХЕМА соединения элементов.

Я уже привел современный источник, в котором написано, что выполняет. Ну да ладно, видимо надо привести более древний литературны источник, бумажный.

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

Итак:

ПРОГРАММА вычислительной машины — описание алгоритма решения задачи, заданное на зыке вычислительной машины.

ПРОГРАММИРОВАНИЕ АВМ — процесс подготовки задачи к решению ее на машине.

Еще в одном месте есть определение структурной АВМ:

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

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

То есть уже в 40-50 годах ХХ века существовали ВМ, представляющие собой поле вычислительных элементов (ты про операционный усилитель слышал когда-нибудь ?), которые нужно было определенным образом соединить, чтобы решить определенную вычислительную задачу.

Соответственно, эволюционный путь этой ветки вычислительных машин выглядел примерно так: АВМ->БМК->ПЛИС+ПАИС.

То что в ПЛИС, в отличии от АВМ или ПАИС, вычислительные элементы цифровые, а не аналоговые, не отменяет того факта, что ПЛИС - вычислительная машина, прошивка - это ее программа, а процесс, в результате которого получается прошивка для ПЛИС/ПАИС, называется программирование.

А то, что всякие неграмотные инженеры думают, что они «рисуют схему», это их проблемы.

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

ПРОГРАММА вычислительной машины — описание алгоритма решения задачи, заданное на зыке вычислительной машины.

У ПЛИС нет языка (нет, Verilog/VHDL - не язык ПЛИС, так же, как Си - не язых машины).

ПРОГРАММИРОВАНИЕ АВМ

Еще можно вспомнить Программу КПСС - это, наверное, тоже софт.

А то, что всякие неграмотные инженеры думают, что они «рисуют схему», это их проблемы.

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

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от 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

У ПЛИС нет языка (нет, Verilog/VHDL - не язык ПЛИС, так же, как Си - не язых машины).

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

Еще можно вспомнить Программу КПСС - это, наверное, тоже софт.

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

Это определение программы применительно к ЦВМ с процессором, то есть определение программы в узком смысле.

В книжке дано определение программы в широком смысле.

P.S.: Sometimes, computer programming is software developement!

shkolnick-kun ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.