Оружие против авианосцев

Теги:
 
?? Andy-Andrei #18.02.2004 13:10
+
-
edit
 

Andy-Andrei

втянувшийся

Очень нужен сабж.
Ты не смотри, что у меня вечно штраф висит... Я не буйный...  
BG Реконструктор #18.02.2004 15:41
+
-
edit
 
+
-
edit
 

Jameson

опытный

И нафига? Думаете, сконвертированый и скомпилированый код будет быстрее работать? Кроме того, с++ много есть разных, вроде как.
Если всеравно какой, то просто возьмите Borland c++builder - он спокойно может компилировать дельфевые исходники и компоновать их к проге на с++ - и конвертер не нужен. У билдера библиотека написана на дельфевом паскале -это они чтобы не переписывать мегабайти текста..
 
?? Andy-Andrei #18.02.2004 17:24
+
-
edit
 

Andy-Andrei

втянувшийся

Не понял, чего такая нервная реакция? ;)

Объясняю: по наследству достался громадный проект на дельфях. В отделе у всех, включая меня, родной язык - СPP. Дельфийская убогость просто достает. Во-вторых, ДО ЗАРЕЗУ нужен препроцессор.
В третьих, билдер, конечно, формочки дельфийские открывает, а вот редактировать их - фиг.
Короче, самому ваять придется?
Ты не смотри, что у меня вечно штраф висит... Я не буйный...  

Lerm

втянувшийся
ИМХО, лучший конвертер - программист. :D В данном случае, лучше или осваивать Delphi (сам не очень люблю, но в данном случае это наилучший вариант), или вручную переписывать под C (получится конечно, лучше, но пока отладите...)
You live and learn. Or you don't live long.  
+
-
edit
 

Balancer

администратор
★★★★☆
Что мне нравится в .NET - это то, что MS изо всех сил проталкивает идею предельной декомпозиции кода на отдельные модули, которые могут писаться на разных языках. Была бы эта история не с Дельфи и C++, а C++ .NET и, например, F# .NET - можно бы было переписывать по частям, только то, что реально в этом нуждается.

В общем, всем будущим проектантам - даёшь максимальную декомпозицию кода! :) (заодно и отлаживать проще)
 

Lerm

втянувшийся
"И все стали добрыми и хорошими (и стали писать только на Паскале!)" © 9600 бод и все, все, все... :D

Java forever... :D

P.S. Sorry, не удержался... :D
You live and learn. Or you don't live long.  
+
-
edit
 

Balancer

администратор
★★★★☆
Lerm, 18.02.2004 19:40:19 :
Java forever... :D
 


По-моему, Java для .NET уже есть :-P
В смысле, компилятор с Java под .NET :)
Только навскидку ссылки не нашёл, потому что понятно, что вначало лезут сплошные "Java vs .NET" :)
 
+
-
edit
 

Balancer

администратор
★★★★☆
Lerm, 18.02.2004 19:40:19 :
и стали писать только на Паскале
...
Java forever... :D
 


Кстати, забавно, но первый компилятор, с которым я столкнулся в жизни (не считая асма ;)) был именно Паскаль и компилировал он в P-код ("пи-код", специфический байткод под свой интерпретатор оного, было это на "Радо-86РК" :)) - то, с чего впоследствии Java и родилась :D
 
BG Реконструктор #18.02.2004 19:58
+
-
edit
 
Balancer, 18.02.2004 18:26:58 :
... изо всех сил проталкивает идею предельной декомпозиции кода на отдельные модули, которые могут писаться на разных языках ...
 


Идея протолкнута давно и не Майкрософтом. :) Апогей был COM, сейчас, по моему, наблюдается регресс.
 

Rada

опытный

Только навскидку ссылки не нашёл, потому что понятно, что вначало лезут сплошные "Java vs .NET"
 
J# называется - проект МС, для того, чтобы джависты себя чувствовали в семье.
С себя можно начать когда все остальное будет в порядке.  

Rada

опытный

Идея протолкнута давно и не Майкрософтом.
 
Кем же? А то я до .NET ни одной коммерческой языково-независимой платформы не видел. COM - тоже МС, но полноценной ОО платформой её не назовёшь - нет собирателя мусора. CORBA - сильно сложна, не получила распространения вне многосвязных бизнес-приложений.
С себя можно начать когда все остальное будет в порядке.  

Zeus

Динамик

Andy-Andrei, 19.02.2004 01:24:16 :
Во-вторых, ДО ЗАРЕЗУ нужен препроцессор.
 


Порочная приверженность :)
И животноводство!  
+
-
edit
 

-exec-

опытный

меня тоже удивляет необходимость препроцессора в ц++.
конечно заголовники включить не обойдёшься,
но больше этого зачем?
константы? - незачем
условная компилляция? - для выброса сообщений при отладке?
опции компиллятора? - есть сценарии сборки
 
+
-
edit
 

Balancer

администратор
★★★★☆
-exec-, 19.02.2004 14:05:28 :
условная компилляция? - для выброса сообщений при отладке?
 


Это уже ОЧЕНЬ важно :)

В общем, я не представляю, как на C++ можно слепить более-менее сложный проект, сложнее нескольких сот строк, не используя директив препроцессора :)
 
?? Andy-Andrei #19.02.2004 16:35
+
-
edit
 

Andy-Andrei

втянувшийся

-exec-, 19.02.2004 14:05:28 :
меня тоже удивляет необходимость препроцессора в ц++.
конечно заголовники включить не обойдёшься,
но больше этого зачем?
 


Хотя бы для этого:

Имеется довольно большой и в известной мере legacy проект. Работает он по схеме 24х7. Более того, изменения в него поступают с удручающей регулярностью, скажем так, раз в месяц. И тут возникает необходимость при сохранении общего архитектурного подхода изменить отдельную глобальную фичу этого проекта. Допустим, для примера, если это база данных - изменить тип данных первичного ключа на всех таблицах. Теперь вопрос, как это сделать, если клиентское приложение на дельфах (с конвертированием собственно базы проблем почти нет)? Очевидный выход для дельфи - завести два параллельных проекта, т.е. поддерживать старую версию, параллельно нарабатывая новую, при этом все изменения между ними приходится синхронизировать вручную. Кто такими вещами занимался, знает, что это адская работа.
На С++ все решается простейшим образом директивами препроцессора прямо в текущем коде - изменения мизерны, локальны и никого не напрягают.
Ты не смотри, что у меня вечно штраф висит... Я не буйный...  
RU Кирилл #19.02.2004 17:26
+
-
edit
 

Кирилл

втянувшийся

2 Andy-Andrei
Какими именно директивами? Если макросами, то это очень нехорошо. Если не ими, то все остальное в Дельфи есть и Вы судите о системе, не разобравшись в вопросе. Я вообще не вижу принципиальной разницы между Дельфи и Билдером, более того, переползти с первой на второй архисложной задачей не является.
- Сами понимаете, вселенная-то на моей стороне.
- Вот это мне таким вульгарным и кажется.
 

ceci_

втянувшийся

Кирилл, 19.02.2004 17:26:56 :
2 Andy-Andrei
Какими именно директивами? Если макросами, то это очень нехорошо.
 


От чего же так плохи макросъ! ?
 

Fakas

опытный

Andy-Andrei, 19.02.2004 16:35:38 :
Хотя бы для этого:

Имеется довольно большой и в известной мере legacy проект. Работает он по схеме 24х7. Более того, изменения в него поступают с удручающей регулярностью, скажем так, раз в месяц. И тут возникает необходимость при сохранении общего архитектурного подхода изменить отдельную глобальную фичу этого проекта. Допустим, для примера, если это база данных - изменить тип данных первичного ключа на всех таблицах. Теперь вопрос, как это сделать, если клиентское приложение на дельфах (с конвертированием собственно базы проблем почти нет)? Очевидный выход для дельфи - завести два параллельных проекта, т.е. поддерживать старую версию, параллельно нарабатывая новую, при этом все изменения между ними приходится синхронизировать вручную. Кто такими вещами занимался, знает, что это адская работа.
На С++ все решается простейшим образом директивами препроцессора прямо в текущем коде - изменения мизерны, локальны и никого не напрягают.
 


Ничего подобного. Условная компиляция в дельфях оч. хорошо работает. Как например сделано у нас. Есть inc файл, кот-й содержит только определеиня имен директив компилятора. При разработке определенн ключ $DEBUG, при релизе мы просто его отключаем.
Учитывая умность дельфового линкера организовать паралельную рациональную поддержку двух версий проги при условии что изначально проект нормально задизайнен (ну например интерфейс с БД не перепутан с формами) элементарно.
Перевод же дельфового проекта на билдер мне лично кажется извращением :). Все равно используется VCL на паскале, тот же срр модифицирован для поддержки VCL значительно.
Sapienti sat !  
+
-
edit
 

Balancer

администратор
★★★★☆
Fakas, 19.02.2004 18:11:13 :
Ничего подобного. Условная компиляция в дельфях оч. хорошо работает.
 


А что на счёт того, чтобы этот проект потом с Дельфей на PocketPC ARM, например, перенести? :D

C++ - это, всё же, не только Wintel :)
 

Zeus

Динамик

Balancer, 20.02.2004 04:06:14 :
А что на счёт того, чтобы этот проект потом с Дельфей на PocketPC ARM, например, перенести? :D

C++ - это, всё же, не только Wintel :)
 


Ну, это уже да, но это совсем другая плоскость. К препроцессору отношения не имеющая. Мое твердое ИМХО - препроцессор (в Сишном виде) вреден. Для условной компиляции он совершенно избыточен. Избыточность - вообще враг :)
И животноводство!  
BG Реконструктор #20.02.2004 13:35
+
-
edit
 
>Кем же?
А никем. Эволюция, однако.

> то я до .NET ни одной коммерческой языково-независимой платформы не видел.

COM очень даже языково-независим. Вообще, в Wintel-е все можно сделать языково независимым. Только для этого мозги надо иметь. А так как настоящие программисты нынче исчезающий вид, то для безмозглых юзеров и сделали .NET.

>COM - тоже МС, но полноценной ОО платформой её не назовёшь - нет собирателя мусора.

Так для вас ООП характеризуется уборкой мусора? :) Каждый COM объект, кстати, обязан самоуничтожится, когда он уже не нужен. Надо лиш указать в программе, что он не нужен. В языках очень высокого уровня, типа VB, такое указание произходит автоматически при выходе из функции.

>CORBA - сильно сложна, не получила распространения вне многосвязных бизнес-приложений.

Да, там вся идея какая-то уродливая.
 
+
-
edit
 

Balancer

администратор
★★★★☆
Zeus, 20.02.2004 10:02:02 :
К препроцессору отношения не имеющая. Мое твердое ИМХО - препроцессор (в Сишном виде) вреден.
 


Ну и как ты будешь без тупейших define писать софт по платформы, где не только, скажем, int отличается, но и размерность char, возможность адресации к адресам не равным словам и т.д. и т.п. :D
 
+
-
edit
 

Balancer

администратор
★★★★☆
Resurrector, 20.02.2004 13:35:49 :
Надо лиш указать в программе, что он не нужен.
 


Вот этим и отличается автоматическая сборка мусора :D

В программе без GC ты можешь забыть сказать, что объект тебе больше не нужен. Утечки памяти - это на сегодня ОСНОВНАЯ беда программирования на Си++ :)

Кроме того, нередки случаи, когда ты просто не можешь сказать, нужен тебе объект или нет удалять его или нет. Пример - ты создаёшь в процедуре объект и возвращаешь указатель на него куда-то выше. Там ты можешь присвоить его глобальной переменной, а можешь и нет. Он используется ещё в куче процедур. Нередки ситуации, особено со структурной обработкой данных, когда ты уже не можешь однозначно сказать на алгоритмическом уровне, нужен он тебе или нет. Приходится добавлять всякие параллельные пакости, типа счётчика использований и т.п., всё, чем GC занимается автоматически :) Только в GC это уже реализовано и отработано, а ты при написании своей программы ещё и ошибок понаделать в своём эмуляторе GC можешь :)
 
BG Реконструктор #20.02.2004 14:18
+
-
edit
 
>В программе без GC ты можешь забыть сказать, что объект тебе больше не нужен.

Тогда используй smart pointers на здоровье. Каждый язык, вкл. C++ убирает стэк после завершения ф-ии, это вызывает деструктор "умного указателя", который, в свою очередь, освобождает COM объект, который в нем (sp)содержится.

>Приходится добавлять всякие параллельные пакости, типа счётчика использований и т.п.

Каждый COM объект содержит такой счетчик. Объект в языке с встроенным GC тоже его содержит. Если тебе надо писать на C++, не хочеш возится с утечками памяти и скорость не имеет значения, то поднимаеш ВСЕ, что тебе надо, на COM уровень и потом пользуешся smart pointers.
 

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru