Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для miltorg
-13 / 10 / 2
Регистрация: 02.03.2015
Сообщений: 326

Хочу написать программу для конвертации(Транспиляции) из Perl в C++

23.10.2020, 10:16. Показов 1161. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++, в PHP, Java и др.

В перспективе: Чтобы код на любом языке можно было переделать в код на любом другом языке.
Разве же это будет не прекрасно?

А может есть уже готовые Транспиляторы?
Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.10.2020, 10:16
Ответы с готовыми решениями:

Я хочу написать программное обеспечение для обрезки и конвертации audio файлов
Здравствуйте, не могли бы вы мне помочь с помощью C# написать программное обеспечение для обрезки и конвертации audio файлов или указать...

Подскажите пожалуйста, хочу написать программу для перевода из 1 в 10 систему счислений
Подскажите пожалуйста, хочу написать программу для перевода из 1 в 10 систему счислений, при вводе А выводит 0, а не 10, при вводе В...

Написать программу по конвертации чисел из бинарной системы в двоичную
Помогите написать программу по конвертации чисел из бинарной системы в двоичнуюю я то от пробывал але ошыбки видает Public Class...

7
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
23.10.2020, 11:34
Цитата Сообщение от miltorg Посмотреть сообщение
В перспективе: Чтобы код на любом языке можно было переделать в код на любом другом языке.
Хочешь свой .Net написать?
Цитата Сообщение от miltorg Посмотреть сообщение
Разве же это будет не прекрасно?
В MS Visual Studio ты можешь писать модули хоть на пяти языках (Если платформа поддерживает), скомпилить их в длл и собрать из них "что-нибудь прекрасное".
Цитата Сообщение от miltorg Посмотреть сообщение
А может есть уже готовые Транспиляторы?
А может ты в гугле поищешь? Тысячи их, которые не всегда в состоянии простейшие лабораторки транслировать.
Цитата Сообщение от miltorg Посмотреть сообщение
Хочу на Perl написать программу для конвертации(Транспиляции) из Perl в C++
Удачи. Серьезно, полезный опыт. Другое дело, что дело это неподъемное для одного человека и я могу с ходу назвать пару вещей, которые заставят плакать того, кто станет писать подобные трансляторы:
1) Различия в стандартных библиотеках. В с++, конечно более богатая стандартная библиотека, чем в си, но тем не менее она ни разу не соответствует перловской. Многие стандартные средства перла превращаются в головную боль и написание велосипедов на с++.
2) Препроцессор. Вопервых программы на с++ очень плохо читаются если их писать в одном файле. Поэтому их разбивают на большее количество исходников, среди которых есть 2 стандартных типа: файлы с объявлениями функций, классов и тд, и файлы с реализацией.
3) Оптимизация. Если просто переводить код с одного языка на другой, то, даже если сохранится логика, он будет не оптимальным. Достаточно сложно в полной мере использовать макроссы, указатели, тот же препроцессор для условной компиляции, ассемблерные вставки, шаблоны, ООП, да и даже стандартную библиотеку.
0
 Аватар для miltorg
-13 / 10 / 2
Регистрация: 02.03.2015
Сообщений: 326
23.10.2020, 11:46  [ТС]
Для ввода возьму вот эту программульку:

Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/perl
 
open D, "mark.csv";
 
for (<D>){
  $i=0;
  $oc=0;
 
  for $v (/\d+/g){
    ++$i;
    $oc += $v;
    
    }
  print $_;
  print "Middle = ";
  print $oc/$i;
  print "\n";
 
  }
close D;
Добавлено через 2 минуты
Это файл журнала:
Фамилия, 5, 3, 4, 2

1. читаем файл
2. Вытаскиваем цифры
3. Считаем средний балл
4. Выводим всё

Добавлено через 1 минуту
Prohorov,5,1,5,1
Batarejkin,5,2,3,3

Добавлено через 5 минут
Цитата Сообщение от assemberist Посмотреть сообщение
ысячи их, которые не всегда в состоянии простейшие лабораторки транслировать.
Угу. То есть - нету.
0
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
23.10.2020, 12:07
Цитата Сообщение от miltorg Посмотреть сообщение
Угу. То есть - нету.
Угу, гуглить не умеешь.
Кликните здесь для просмотра всего текста
есть переводчики Perl на C, но ни один из них не идеален. В идеале вам нужен переводчик, который является правильным и элегантным. Увы, вы не можете иметь оба, простой код Perl не эквивалентен простому коду C, поэтому вам либо нужно иметь перевод, который не является 100% правильным, либо так же сложен, как сам Perl. Это заставило некоторых поверить, что вы не должны пытаться перевести Perl. Точнее было бы сказать, что нужно четко понимать, чего вы хотите добиться от перевода, а не ожидать чудеса.

100% правильно легко: если ваш скрипт Perl myperl.pl тогда программа C void main(){system("perl myperl.pl")} будет делать именно то, что myperl.pl будет сделано; хотя это довольно бессмысленно. The perlcc компилятор немного более сложный, но все же, похоже, не дает большой пользы. Я не заметил perlcc быть быстрее, чем простой Perl. Кроме того, хотя код Perl может быть заведомо трудным для чтения, я предпочитаю print "Hello World\n" до 700 линии длинного чудовища, что perlcc переводит его в. Я не видел, чтобы эти программы производили что-либо, что прошло бы проверку кода, а также написанный элегантный код C. OTOH, если вам нужен компилятор, потому что вы не хотите распространять исходный код не запутанным способом, то perlcc может творить чудеса.

стабильным версиям может достичь скорости ИБП, но очень ограничен в том, что он может перевести.

для примера тривиального" элегантного, но не правильного " переводчика см. прототип perl2c++.pl. Это работает путем замены (нескольких) стандартных Perl-измов на C++-измы. C++ был выбран, потому что это язык высокого уровня, такой как Perl, но по-прежнему разделяет тот же самый металлический этос C.

в случае простого генератора псевдослучайных чисел LCG LCG.pl, выход perl2c++.pl - это чистый и лаконичный код C++, который работает в десятки раз быстрее исходного Perl и не зависит от библиотек Perl. Он может быть расширен, чтобы искать все стандартные ответы на "как сделать X на Perl " и заменить его на "Как сделать X в C++". Тогда он мог бы успешно перевести многие простые, но реальные скрипты Perl и помочь человеку перевести нетривиальное программное обеспечение Perl в элегантный код c++. Это было бы наиболее полезно, если вы обнаружите, что пишете числовое программное обеспечение в Perl, которое должно было быть написано на C++ в первую очередь.

https://askdev.ru/q/kak-konver... -c-333578/
0
 Аватар для miltorg
-13 / 10 / 2
Регистрация: 02.03.2015
Сообщений: 326
23.10.2020, 12:50  [ТС]
А можно поточнее. И именно на те языки которые я написал в исходном сообщении

Добавлено через 41 секунду
С - это не С++

Добавлено через 1 минуту
Написал для С++. Вот что оно выдало:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <fstream>
#include <regex>
using namespace std;
 
int main(){
  string u = ""; float oc; int i;
  
  ifstream D ( "mark.csv");
  
  while (getline(D, u)){
    u+="\n";
    i=0;
    oc=0;
  
    regex space_re(R"(\d+)");
 for(auto t= sregex_token_iterator(u.begin(),u.end(),space_re); t!= sregex_token_iterator(); ++t){
     string  v =*t;
      ++i;
      oc += stoi( v);
      }
    cout << u;
    cout << "Middle = ";
    cout << oc/i;
    cout << "\n";
  
    }
 
  return 0;
  }
0
 Аватар для miltorg
-13 / 10 / 2
Регистрация: 02.03.2015
Сообщений: 326
24.10.2020, 06:40  [ТС]
Принцип работы программы - на основе регулярных выражений:

Perl
1
2
s/^[ \t]*#.*//g;
s/q~(.+?)~;/R"HTML($1)HTML";/gs;
Ни кому не интересно? Никто не хочет присоединится?
0
913 / 339 / 135
Регистрация: 18.07.2017
Сообщений: 1,485
24.10.2020, 10:10
Цитата Сообщение от miltorg Посмотреть сообщение
Никто не хочет присоединится?
А ты что хотел? То, что каждый сишник умеет в перл?
Цитата Сообщение от miltorg Посмотреть сообщение
Ни кому не интересно?
Я и без твоего конвертера могу на плюсах писать. А если более аргументированно, я не вижу области, где это можно будет применить. Ну и в добавок, несмотря на то, что такие языки как с++, жаба, с#, perl и тд. называются языками общего назначения, область применения у них разная, как и наборы инструментов и порог вхождения. Так что грамотный инженер сначала изучит требования к системе и на их основании выберет и языки и архитектуру на этапе проектирования и не будет думать о том, чтобы переписать часть модулей, скажем на си, потому, что текущие почему-то подтормаживают.
0
 Аватар для miltorg
-13 / 10 / 2
Регистрация: 02.03.2015
Сообщений: 326
24.10.2020, 11:45  [ТС]
Дописал для Джава.
Теперь исходную можно Транспилировать на 2 языка:

С++ и Java
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
24.10.2020, 11:45
Помогаю со студенческими работами здесь

Привет, хочу написать программу для одного китайского телефона чтобы открывать word документы
кто может посоветовать ?

Хочу написать программу для подсчета площади прямоугольника, на строке S = count(S, a, b); выдает ошибку переменная S возможно не инициализирована.
Помогите начинающему програмисту, пожалуйста. Хочу написать программу для подсчета площади прямоугольника, на строке S = count(S, a, b);...

Создать Таблицу конвертации для конвертации рублей России в разные валюты с учетом комиссии.
Помогите написать программу, пожалуйста Создать: “Таблица конвертации” для конвертации рублей России в разные валюты с учетом...

Как правильно написать программу с использованием Perl/Tk
Есть задача. Просканировать по запуску программы компьютеры в локальной сети и вывести на экран(GUI) IP-адреса, возле каждого время начала...

Хочу написать программу
Здравствуйте. Раньше я изучал программирование под андроид и основы Java. Надо только будет освежить память. Хочу написать программу,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
BOINC: 22 года — и всё ещё работает
Programma_Boinc 12.03.2026
BOINC: 22 года — и всё ещё работает Дэвид Андерсон написал ретроспективу. Кратко: в 2001 году он ушёл из United Devices, где был CTO, и за несколько месяцев написал ядро BOINC — клиент, сервер,. . .
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 03.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru