Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C++ --> Java, Конвертер 
V
    Опции темы
Амортизатор
Дата 5.6.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 17.4.2005
Где: в Караганде

Репутация: нет
Всего: 8



Цитата(Beard @  5.6.2006,  21:37 Найти цитируемый пост)
to Amortisator: Мы, наверное, о разных вещах говорим...
Есть задача из области реинжиниринга - сорцы программы C++ -> сорцы Java.
Если наши сорцы на С++ на выходят за рамки Standart C++ (т.е. не используют сторонних
библиотек), то проблем никаких (может я и вру, но ничего в стандарте C++, что нельзя
реализовать (найти аналог) на Java, нет! - если не прав, ткните).


А я имел ввиду как раз не средства самого языка (С++), а проблемы на уровне API платформы. Однако, если говорить о языковых различиях, то и здесь, как указал Void, проблем не оберешься. По сути, надо готовиться к тому, что после конвертации среднестатической программы с С++ на Java, получится абсолютно нечитаемый и плохо поддерживаемый код. Как, например, такое: операции над указателем на указатель - придется в самом деле заводить ссылку объект, содержащий массив ссылок на другие объекты или просто на массив (проще, но будут имхо минусы), и далее детерминировать операции над указателем на указатель индексацией по массиву. Тут как минимум служба сопровождения может устроить забастовкуsmile 


--------------------
Поехали!
PM MAIL   Вверх
Beard
Дата 5.6.2006, 23:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.7.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 9



Цитата(Void @  5.6.2006,  23:03 Найти цитируемый пост)
при реализации Java -> C++ основную сложность составила бы реализация рантайма (GC, портирование библиотек)

А на reflection вообще б загнулись smile

Цитата(Void @  5.6.2006,  23:03 Найти цитируемый пост)
Указатели. В общем случае адресную арифметику перенести на Java нельзя. Можно только распознать некоторые типичные случаи применения адресной арифметики и эмулировать ее с помощью массивов, спец. классов и т.д. В общем случае придется либо прибегать к помощи JNI, либо поднимать лапки.

Либо пользовать Java-ские "дырки", типа sun.misc.Unsafe, что не есть хорошо - не поспоришь...

Цитата(Void @  5.6.2006,  23:03 Найти цитируемый пост)
И, наконец, не забываем про исключительную сложность самого парсера C++. 


Эээ, а в чем его сложность? Есть специфицированная грамматика и куча тулзов, которая запросто
построит парсер по этой грамматике. Или я не так понял?
 
PM MAIL   Вверх
Void
Дата 5.6.2006, 23:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(sergej.z @  6.6.2006,  01:30 Найти цитируемый пост)
В большинстве стучаев конвертер нужен для перегона алгоритмов из одного языка в другой.

Ну если рассматривать подмножество языка без классов, шаблонов и т.д, чаще всего используемое при реализации алгоритмов, а использование STL транслировать ad-hoc, то еще как-то подъемно. Для конвертации пары функций можно и написать… Правда, для пары функций может оказаться достаточно copy&paste, find&replace smile
Цитата(sergej.z @  6.6.2006,  01:30 Найти цитируемый пост)
Иногда проектов.

Имхо, для данного случая — нереально.

Добавлено @ 23:42 
Цитата(Beard @  6.6.2006,  01:36 Найти цитируемый пост)
Либо пользовать Java-ские "дырки", типа sun.misc.Unsafe, что не есть хорошо - не поспоришь

Я ни разу не спец в Java, так что если там есть unsafe, тем лучше smile
Цитата(Beard @  6.6.2006,  01:36 Найти цитируемый пост)
А на reflection вообще б загнулись

Нет, ну почему… Раз мы можем навязать в своем коде single-root иерархию, проблем особых не будет.
Цитата(Beard @  6.6.2006,  01:36 Найти цитируемый пост)
Эээ, а в чем его сложность? Есть специфицированная грамматика и куча тулзов, которая запросто построит парсер по этой грамматике. Или я не так понял?

Грамматика C++ не является контекстно свободной, не укладывается ни в LL(k), ни в LALR(1), которые могут разбирать большинство генераторов парсеров. Поддается GLR, но все равно лучше взять готовое решение, например на базе того же GCC. Существуют десятки компиляторов C++ и приличные в плане корректной поддержки всех конструкций можно перечислить на пальцах одной руки — это ли не свидетельство сложности задачи? 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
sergejzr
Дата 5.6.2006, 23:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(Void @  5.6.2006,  21:37 Найти цитируемый пост)
Имхо, для данного случая — нереально.  

а что у нас за случай? Автор вроде словом не обронился smile .
Я в своё время как раз использовал конвертер для проекта из С++ в Java. C одной стороны find/replace конечно тоже поможет, но с другой там много чего ещё. 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Void
Дата 5.6.2006, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(sergej.z @  6.6.2006,  01:47 Найти цитируемый пост)
Я в своё время как раз использовал конвертер для проекта из С++ в Java.

Эта… ссылку в студию! На конвертер smile
Цитата(sergej.z @  6.6.2006,  01:47 Найти цитируемый пост)
но с другой там много чего ещё.  

Вот именно. Как он вопрос с библиотеками-то разруливает? 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
sergejzr
Дата 5.6.2006, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 6
Всего: 360



Цитата(Void @  5.6.2006,  21:51 Найти цитируемый пост)
Вот именно. Как он вопрос с библиотеками-то разруливает? 

Никак. Он не для того предназначен, чтобы программу из языка в язык переводить, а для того, чтобы помочь перевести (об этом я собственно в первом посте и писал).

Ссылку не дам, проект 5 лет назад был.

Добавлено @ 00:01 
PPS: 
Насчёт библиотек:
Он просто вызовы функций пишет и всё. естесственно их не имплементирует 


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Beard
Дата 6.6.2006, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.7.2005
Где: Санкт-Петербург

Репутация: 2
Всего: 9



Цитата(Void @  5.6.2006,  23:37 Найти цитируемый пост)
Нет, ну почему… Раз мы можем навязать в своем коде single-root иерархию, проблем особых не будет.

Не совсем понял - можно поподробней?

Цитата(Void @  5.6.2006,  23:37 Найти цитируемый пост)
Грамматика C++ не является контекстно свободной, не укладывается ни в LL(k), ни в LALR(1), которые могут разбирать большинство генераторов парсеров. 

Не спорю, но тем не менее это возможно, и есть
готовые решения (Зуев, например, написал приложение к русскому Ахо, Ульман, Сети, где описывается
грамматика С++ для YACC/bison, правда с кой-какими допущениямиsmile)

Цитата(Амортизатор @  5.6.2006,  23:36 Найти цитируемый пост)
конвертации среднестатической программы с С++ на Java, получится абсолютно нечитаемый и плохо поддерживаемый код

Это почему "абсолютно нечитаемый" (если опустить указатели на указатели на..., и то, мне помнится,
что-то неплохое придумали по этому поводу - не про читаемость, а про возможность реализовать
трансляцию на Java - попытаюсь найти и кинуть ссылку)?
Как я сказал, даже распространенные шаблоны (~GoF) "отсекаются"!
 
PM MAIL   Вверх
Void
Дата 6.6.2006, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


λcat.lolcat
****


Профиль
Группа: Участник Клуба
Сообщений: 2206
Регистрация: 16.11.2004
Где: Zürich

Репутация: 1
Всего: 173



Цитата(Beard @  6.6.2006,  02:26 Найти цитируемый пост)
Не совсем понял - можно поподробней?

В сгененрированном по Java C++ коде все классы будут унаследованы от одного, скажем, JObject. Ничто нам не мешает сделать ряд виртуальных методов для рефлексии и саморегистрацию всех методов и членов в каждом классе. Многие C++ библиотеки таким образом обеспечивают свой собственный RTTI.

Цитата(Beard @  6.6.2006,  02:26 Найти цитируемый пост)
Не спорю, но тем не менее это возможно, и есть готовые решения (Зуев, например, написал приложение к русскому Ахо, Ульман, Сети, где описывается
грамматика С++ для YACC/bison, правда с кой-какими допущениямиsmile)

Угу, видел я эту грамматику. Вопрос в том, с какими именно допущениями smile Разработчики GCC, начиная с версии 3.4, отказались от использования Bison и переключились на собственный вручную написанный рекурсивно-нисходящий парсер. Не от хорошей жизни, наверное, учитывая огромную инерцию такого большого проекта, и сколько на него завязано кода.

Есть еще Elkhound — генератор GLR-парсеров. С его помощью написан парсер C++ Elsa. 


--------------------
“Coming back to where you started is not the same as never leaving.” — Terry Pratchett
PM MAIL WWW GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1279 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.