Автоматическая трансляция с Java на C++
От: igna Россия  
Дата: 28.02.13 09:46
Оценка: 1 (1)
Парсер HTML в Firefox получен при помощи автоматической трансляции парсера написанного на Java для Validator.nu:

The parser core compiles on Google Web Toolkit and can be automatically translated into C++. (The C++ translation capability is currently used for porting the parser for use in Gecko.)

здесь

Почитал кое-что еще по поводу используемого в Gecko парсера; похоже, что транслятор был написан после Java-парсера, и нигде не сказано, что парсер изначально писался на Java, с целью его последующей автоматической трансляции на C++.

Интересно, насколько автоматическая трансляция возможна в общем случае? Скажем, сколько процентов программ на Java можно автоматически транслировать на C++? Лет 10 тому назад даже люди транслировали с Java на C++ делая уйму ошибок, в первую очередь конечно memory leaks.
Re: Автоматическая трансляция с Java на C++
От: LaptevVV Россия  
Дата: 28.02.13 09:51
Оценка:
Здравствуйте, igna, Вы писали:

I>Интересно, насколько автоматическая трансляция возможна в общем случае? Скажем, сколько процентов программ на Java можно автоматически транслировать на C++? Лет 10 тому назад даже люди транслировали с Java на C++ делая уйму ошибок, в первую очередь конечно memory leaks.

D 99 году у меня один пацан писал диплом как раз по этой теме.
Сделать вполне можно. Только проблема не в самом языке. И даже не в сборке мусора.
Проблема в библиотеке Явы.
Много дописывать вручную на С++.
Хотя для нового стандарта должно быть полегче. Но Swing — по любому либо переводить в Qt, например, либо писать самому.
И подобных моментов — много.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: Автоматическая трансляция с Java на C++
От: FR  
Дата: 28.02.13 10:24
Оценка:
Здравствуйте, igna, Вы писали:

I>Почитал кое-что еще по поводу используемого в Gecko парсера; похоже, что транслятор был написан после Java-парсера, и нигде не сказано, что парсер изначально писался на Java, с целью его последующей автоматической трансляции на C++.


I>Интересно, насколько автоматическая трансляция возможна в общем случае? Скажем, сколько процентов программ на Java можно автоматически транслировать на C++? Лет 10 тому назад даже люди транслировали с Java на C++ делая уйму ошибок, в первую очередь конечно memory leaks.


Для D есть транслятор с явы http://www.dsource.org/projects/tioport/wiki/TioPort с его помощью например
портировали SWT (http://www.dsource.org/projects/dwt/wiki) но полностью автоматом пока не получается,
хотя D "ближе" к ява хотя бы тем что есть GC и классы больше похожи на явовские, а не плюсовые.
Re: Автоматическая трансляция с Java на C++
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.02.13 14:23
Оценка:
Здравствуйте, igna, Вы писали:

I>Интересно, насколько автоматическая трансляция возможна в общем случае? Скажем, сколько процентов программ на Java можно автоматически транслировать на C++? Лет 10 тому назад даже люди транслировали с Java на C++ делая уйму ошибок, в первую очередь конечно memory leaks.


Трансляция языка Java в C++ дело не хитрое. Проблема только в том, что без GC и библиотек смысла в этом не много. Для парсера ХТМЛ это прокатит, так как парсер на входе имеет текстовую строку, а на выходе некую структуру данных. Тут можно обойтись и без GC и без библиотек. GC можно заменить пулом памяти, а библиотек там и так не надо особой.

Для сложной программы это практически невозможно. Можно конечно написать свой GC и транслировать все библиотеки, но в результате получим код работающий хуже чем в исходной Яве и при этом еще имеющий кучу проблем (от копирайта, до совместимости).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Автоматическая трансляция с Java на C++
От: Cyberax Марс  
Дата: 28.02.13 18:29
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Для сложной программы это практически невозможно. Можно конечно написать свой GC и транслировать все библиотеки, но в результате получим код работающий хуже чем в исходной Яве и при этом еще имеющий кучу проблем (от копирайта, до совместимости).

Для GC обычно используется консервативный Boehm GC, который на практике работает удовлетворительно (Mono его использовал до начала этого года).
Sapienti sat!
Re: Автоматическая трансляция с Java на C++
От: ambel-vlad Беларусь  
Дата: 02.03.13 00:13
Оценка: +1
Здравствуйте, igna, Вы писали:


I>Интересно, насколько автоматическая трансляция возможна в общем случае? Скажем, сколько процентов программ на Java можно автоматически транслировать на C++?


В нашей компании лет 5-6 назад тоже игрались с трансляцией. С C# на Java и обратно. Автоматическая трансляция возможна только для конструкций языка. А когда начинаются библиотеки (в том числе стандартные), то, называется, тушите свет. Взять банальный String.Substring(int, int). Если при трансляции оставить все как есть, то работать будет неправильно. Потому что в С№ параметры — первый индекс и сколько символов. А в Java — start and end index. И это надо учитывать. И это самый простой случай.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.