Своя реализация G

Делись идеей, получай поддержку и критику!
Аватара пользователя
Vitekkz88

Activity Silver Автор
expert
expert
Сообщения: 1100
Зарегистрирован: 21 янв 2014, 15:45
Награды: 3
Версия LabVIEW: 12,13,14
Откуда: Томск
Контактная информация:

Re: Своя реализация G

Сообщение Vitekkz88 »

IvanLis,
Как говориться "Чем бы дитя не тешилось - лишь бы не руками"
Тут скорее так подойдет: "Чем бы дитя не тешилось - лишь бы не вешалось".
Коллега Данил, Вам аллегория ясна?
К примеру установите LabVIEW на свежую машину и не перезагружайтесь, откройте исходник с потоками и попробуйте запустить. Ошибка: не удалось подключиться к GPIB службе
Может такие фишки на линуксе происходят?Под виндой полёт нормальный и такого не наблюдалось.
Данил
Borjomy_1 Сегодня, 14:00
Как только вам понадобится сделать компилятор, нормально поддерживающий хотя-бы минимум предложенного функционала, поймете - в одиночку эту работу делать бесполезно.
это же как пить дать,не?Исключение:работать над этим за реальные $$$(и не надо о перспективах и полезности. Польза пользой - а кушать хочется каждый день).
IvanLis,
В первую очередь определитесь, что Вы хотите. Транслятор или компилятор, судя по постам, именно транслятор
По-большому счету - не суть. Даже если это будет транслятор - то моментально возникает вопрос об его оптимальности.
А че, вон в Simulink(графическое дополнение к MatLAB),по-моему с 2008-го года, есть встроенный HDL-кодер. Казалось бы - это крутая примочка для ПЛИС-разработчиков.А вот не такая уж и крутая на самом деле. Не знаю ни одного разработчика ПЛИС,который рисует серьезный проект в Simulink,генерит код(описание) по модели и с успехом заливает всё это дело в кристалл. Какие-то отдельные части проекта можно так сделать...да и то,эти части ручками на VHDL проще самому написать. И по сей день MathWork пилят этот кодер и допиливают,чтобы мог Simulink-модель более-менее адекватно и оптимально транслировать в VHDL-код. Очень сомневаюсь,что в MathWork над такой задачей новатор-энтузиаст работает.
Чтобы определиться с вопросом "а надо ли?",то вот картинка на закусь(квадрат Декарта).
Вложения
decart.png
decart.png (39.02 КБ) 5301 просмотр
Инженер - это открыто светящийся интеллект, свободный и не обидный юмор, это легкость и широта мысли...Это воспитанность, тонкость вкусов, хорошая речь, плавно согласованная и без сорных словечек...
-А. И. Солженицын
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1326
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 36 раз
Контактная информация:

Re: Своя реализация G

Сообщение AndreyDmitriev »

Данил писал(а):Не понимаю, почему все хочется подчеркнуть чужую некомпетенцию в чём либо, оправданно или нет. Я предлагаю серьезную идею, которая не находится на грани фантастики
Коллега Данил, тут дело не в этом. Для написания компилятора, скажем так, требуется некоторый опыт в разработке программного обеспечения. Когда необходимый объём опыта набирается, то вопросы, подобные вашим уже не задаются. Сам факт задавания вопроса в такой форме говорит об отсутствии опыта и необходимого объёма знаний.

Вы же пишете
Данил писал(а):Подумал над такой не сложной вещью, как написать свой компилятор
Это не "несложная вещь", а довольно объёмный проект. Ничего невозможного тут нет, кроме того это прекрасное упражнение в программировании (при наличии достаточного количества времени). Графический редактор для редактирования кода - тоже штука нетривиальная, на которую придётся кучу времени положить.
Ещё раз - в основе компиляторов лежат довольно фундаментальные принципы, эта теория довольно хорошо описана. Для начала имеет смысл обложиться кучей учебников. Затем посмотреть на уже имеющиеся решения. И лишь затем сделать свой велосипед.

Ну вот ещё тут почитайте:
http://www.ni.com/white-paper/11472/en/
Данил
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 окт 2014, 10:35
Версия LabVIEW: 2010 linux
Контактная информация:

Re: Своя реализация G

Сообщение Данил »

IvanLis писал(а):Как говориться "Чем бы дитя не тешилось - лишь бы не руками" :wink:

В первую очередь определитесь, что Вы хотите. Транслятор или компилятор, судя по постам, именно транслятор мнемосхем в код С.

Посмотрите проект FLProg (http://flprog.ru/), там решается подобная задача (http://flprog.ru/FLProg/pid218088913/si ... i217633534).
Можете пообщаться с автором, может найдете общий язык.

Наличие свободного времени это хорошо, а еще лучше если Вы его будите расходовать с пользой :super:
Я прошу прощения, но я в основном программист под linux, и мне близка идеология gcc, так вот руководствуясь ей, компиляции - трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, примерно как в вики написано.
Так вот в этой теме я предлагаю обсуждать, как же должен работать компилятор, что бы в конце концов можно было реализовать всю систему языка G.
Подумал тут над параллелизмом внутри одного процесса, если действительно программе необходим доступ ко всей собственной памяти как из всех параллелей, можно разбить код параллелей на "единицы кода" , - сегменты кода, которые требуют примерно равное время на исполнение, и перепрыгивать метками из одной части к другой по всем параллелям, может кто предложит пути проще?
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1326
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 36 раз
Контактная информация:

Re: Своя реализация G

Сообщение AndreyDmitriev »

Данил писал(а): Я прошу прощения, но я в основном программист под linux, и мне близка идеология gcc, так вот руководствуясь ей, компиляции - трансляция программы, составленной на исходном языке высокого уровня, в эквивалентную программу на низкоуровневом языке, примерно как в вики написано.
Это как бы справедливо не только для linux/gcc но и для любой другой пары ОС/компилятор, да хоть Windows/MSVC.
Данил писал(а): Подумал тут над параллелизмом внутри одного процесса, если действительно программе необходим доступ ко всей собственной памяти как из всех параллелей, можно разбить код параллелей на "единицы кода" , - сегменты кода, которые требуют примерно равное время на исполнение, и перепрыгивать метками из одной части к другой по всем параллелям, может кто предложит пути проще?
Вы не сможете статическим анализом определить время исполнения. Кроме того, при таком решении вы лишитесь возможности параллельного исполнения в пределах одного модуля. Я бы пошёл по пути создания множественных потоков - опять же примерно так, как LabVIEW поступает. Мне смутно кажется, что в области многозадачности и параллелизма вы тоже немного "плаваете". В дополнение к списку литературы про компиляторы я могу ещё порекомендовать прочитать Эндрю Таненбаума " Операционные системы. Разработка и реализация". Это вообще классика.

Ладно, давайте с другой стороны зайдём.
Вы это на чём писать собираетесь?
Как это будет выглядеть с точки зрения конечного пользователя? Как в LabVIEW - передняя панель/блок-диаграмма? Либо оставите только диаграмму и ввод/вывод будете осуществлять из консоли?
Данил
beginner
beginner
Сообщения: 27
Зарегистрирован: 20 окт 2014, 10:35
Версия LabVIEW: 2010 linux
Контактная информация:

Re: Своя реализация G

Сообщение Данил »

Как это будет выглядеть с точки зрения конечного пользователя? Как в LabVIEW - передняя панель/блок-диаграмма? Либо оставите только диаграмму и ввод/вывод будете осуществлять из консоли?
Оставлю только диаграмму, а вывод оставлю за программистом, хоть stdin/stdout, хоть пусть к x11 серверу подключается или средствами ShellAPI окна создаёт. С параллелизмом пока успокоюсь, почитаю.
Начитался про потоки в СИ, проект вполне жизнеспособен. Начну с самого компилятора, без редактора. Сам компилятор буду писать на LabVIEW, потом, портирую его для своего компилятора. :super:
Скоро выложу пару картинок характеризующих принцип работы моего компилятора.
Ответить

Вернуться в «Проекты»