Автор
|
Тема: В какой среде лучше ваять проги на С/С++
|
jok |
опубликован 16-10-2001 01:32 MSK
Привет всем, кто заглянул! Стою у перепутья. Пользовался Pascal/Delphi, но жизнь диктует своё - нужно переходить на Сю. Подскажите в какой среде лучше ваять проги под Винду. Мне важны 3 качества: 1) Распространённость среды разработки (стандарт де-факто). 2) Возможность быстрой разработки а-ля Delphi. Чтобы при написании проги (я пишу в основном сетевуху) не тратить много времени на интерфейс. 3) Нехилая база библиотек (классов, компонентов и т.п.). В Delphi можно найти компоненты для любого случая жизни (почти).Заранее спасибо!
|
Kosha
|
опубликован 16-10-2001 02:29 MSK
Ну, надеюсь, выбираешь между Builder и MSVC++.Так вот. Критерии у них немного другие: Если хочешь скорость работы, надежность, малый размер, совместимость и т.д. - MSVC. Если хочешь, чтоб глюки появлялись "по заказу" - т.е. ты с ними ничего сделать не можешь, хоть с бубном пляши, постоянную падучесть, громоздкий код и т.д., но скорость разработки интерфейса - Builder. Вот что скажу: в VC есть клевая весчь - MFC. По скорости разработки интерфейса всего на 10-15% медленнее, чем на билдере (если придрочиться), почти нормальная скорость работы и т.д. Это в основном. Теперь твои критерии: >>1) Распространённость среды разработки (стандарт де-факто). -Скоро станет C# ;-))) >>2) Возможность быстрой разработки а-ля Delphi. Чтобы при написании проги (я пишу в основном сетевуху) не тратить много времени на интерфейс. -Тут два вопроса: быстрый интерфейс - билдер. Но сетевые проги (особенно сервисы) на нем писать не рекомендую ;-) 3) Нехилая база библиотек (классов, компонентов и т.п.). В Delphi можно найти компоненты для любого случая жизни (почти). И там, и там. И вообще, билдер намного проще выучить, чем VC, а при наличии опыта в VB/Delphi и VC на билдере ваяешь с закрытыми глазами 8-)
Вот. Я сказал ;-)))))))
|
server_mouse
|
опубликован 16-10-2001 09:31 MSK
Во блин! И добавить то нечего... Не такая уж и глючность у билдера, просто его простота раслабляет, и ты всё время что-то упускаешь. Глюки можно отловить ВЕЗДЕ. |
Flex Ferrum
|
опубликован 16-10-2001 10:05 MSK
Если ты говоришь, что перед этим программировал на Delphi - то, конечно, лучше всего тебе пересеть на билдер. Момента два: 1. Ты не будешь испытывать дискофорта от незнакомой среды разработки; 2. (как следсвие) сосредоточится на освоении техники программирования на C++После чего (когда с С++ освоишся) советую попрограммировать на VC (адекватное количество времени) - чтобы понять приемущества и недостатки обоих сред. После этого ты сам сможешь сделать адекватный выбор. |
Ursus
|
опубликован 16-10-2001 12:54 MSK
По поводу глючности Builder-а: Я так и не заставил его работать с критическими секциями.. Тот же код на VC нормально всегда работал. Может кто сталкивался и победил сырость? :) |
zAg
|
опубликован 16-10-2001 13:04 MSK
CRITICAL_SECTION cs; ..... try{ EnterCriticalSection(&cs); //do something } __finally{ LeaveCriticalSection(&cs); }Все работает ,в чем проблема ? |
VladF
|
опубликован 16-10-2001 13:18 MSK
Все зависит от того, чего ты от него (С++) хочешь? Если будешь писать что-то с кнопочками, то лучше (однозначно) Builder. В других случаях - VC++. Если хочешь писать под заказ или работь програмером - MSVC++ (ONLY) и все от него выходящие С#, .NET, ... Я перешел с Builder'a на MSCV++ и скажу что за исключением построения интерфейса последний круче фактически во всем (и в сложности освоения тоже). Советую начать с Builder'a после Delphy никаких проблем с переходом на него не будет (или не должно быть). |
zAg
|
опубликован 16-10-2001 13:51 MSK
Закинул фразу не в тот топик :), повторюсь : Что касается размеров exe-шника, то VC++ будет всегда выигрывать - нет смысла пристыковывать MFC к проге, как это приходится делать с VCL для release. Насчет глюков не знаю - делал прожекты с 12 формами и еще с несколькими юнитами - все нормально. Но,если честно,порой достает громоздкость и неповоротливость VCL - если работаешь по ее правилам - все ok, но если задумал что-то сделать по своему - трахома . Сам я тоже неоднократно порывался пересесть на VC++ - но ведь грядет .NET - а я так понимаю это замена MFC. И у меня такое ощущение что .NET это будет нечто еще более монстроидальное чем VCL. Так что есть ли смысл переходить на VC++ сейчас? |
VladF
|
опубликован 16-10-2001 14:35 MSK
1) MFC и MSVC++ будет жить еще достаточно долго (я много узнавал на этот счет). В виду того, что много уже написано на MSVC++ развивать эти проэкты дальше будут тоже на MSVC++. И собственно програмисты на MSVC++ будут еще нужны достаточно долго. 2) Я думаю, что перейти на C# или .NET бедут куда проще с MSVC++ чем с любого другого языка. Кстате, сейчас я незнаю никого, кто бы писал хотябы на C#. Ввиду того, что MSVC++ еще хватает для многих задач. Нет смысла учить что-то новое (говорят мне) если на старом это можно написать довольно просто (тем более что все исходники написаны на MSVC++). 3) Мое личное мнение: Builder никак не может конкурировать с MSVC++, а тем более с С#. Что, фактически, мы и наблюдам... На счет того, что .NET замена MFC я ничего не слыхал. Все, рано или поздно, стареет и умирает. После .NET будет еще что-то... сидеть и ждать это плохая идея. (см. п2) Знания, а особенно навыки в програмировании никогда не бывают лишними. |
zAg
|
опубликован 16-10-2001 14:49 MSK
Тогда такой вопрос: если хорошо знаешь API насколько трудно осваивается VC ? Кстати VC++ я недавно поставил - поглядеть: Меня смутило непривычно маленькое количество компонет на палитре : например в билдере я постоянно использую StringGrid - в VC ничего похожего не заметил - те придется самому писать... Ну ладно, в билдере как :написал любой компонент (кнопку, панельку ,окно и тд) установил на палитру и удобно юзаешь во всех проектах - а есть нечто подобное в VC ?
|
VladF
|
опубликован 16-10-2001 15:08 MSK
TO zAg: Именно с 12ю формами... Еще раз повторюсь: для того, чтобы сделать что-то с кнопачками C++ Builder самый оптимальный язык. Но не более. Первое время будет сложновато особенно если переходишь с Builder'a, а потом насобачишься и все пойдет. Я сам проделал этот путь... Компонент мало - используй ActiveX их дофига, а еще больше можно с сайтов накачать. В VC++ тоже все просто - написал (достал) ActiveX прописал в ситему, установил (в самом VC++) и юзаешь где и как хочешь. |
zAg
|
опубликован 16-10-2001 15:29 MSK
Все таки ,VladF, не просекаю я фишку VC++: Сам говоришь: интерфейс организовать в билдере удобно => делаем интерфейс - исп. VCL , остальное - API. Сам я в последнее время работаю с портами - написал компонентик , а там threads,events,windows,messages, file mapping (migel thanks!) - все на API - и отлично работает. Так чем плохо сочетание VCL+API ?ps. Конечно раздражает что VCL на пасквиле - отлаживать неудобно :(. |
Emerald
|
опубликован 16-10-2001 15:50 MSK
Позволю ложку дёгтя в сторону славного VC: я сколько не пытался запустить, всё не получалось стартонуть прогу под НТ4 - там не хватало библиотеки. Затем про размер: размер там малый, но сами посчитайте размеры прилагаемых библиотек: то на то и выйдет. Про критические секции: всё по норме. Работает и бежит впереди (у меня лично). Вы не думайте, что я лично за Борланд - там и так глюков полно. |
Emerald
|
опубликован 16-10-2001 15:54 MSK
Да, и вернусь к MFC - это просто пародия на библиотеку. Это мне представляется так: сначала выучи MFC (причём ты должен разбираться в ооочень больших тонкостях), затем постоянно следи за патчами и обновлениями, затем сам ваяй к ней дополнения и не забывай про программисткое мастерство, которое состоит в обходе всех ограничений библиотеки. Затем читай MSDN - нафига такое надо?? Не проще ли просто раздобыть компонент и совместить его с кодом - так хоть уверенности больше.Что-то я разошеля сегодня - извините, если что. Просто всю ночь сидел и не мог понять, почему класс наследованный от CFrame (VC) не наследует всех свойств... |
al
|
опубликован 16-10-2001 15:57 MSK
Переходя с Delphi на C++, лучше переходить на ... C#. На мой взгляд после Pascal там будет гораздо уютнее чем C++ (хотябы без h-файлов). По поводу VC++/MFC - в Visual Studio.Net MFC продолжает развиваться, хотя это тупиковый путь (нормального визуального создания интерфейса аля Visual Basic/Delphi там не будет никогда). |
VladF
|
опубликован 16-10-2001 15:57 MSK
Используя MFC все можно сделать намного проще, чем через API. Зачем писать то, что уже написано - наследуй классы... (Особенно что качается сетки.) У VC++ есть множество ActiveX для любых задач, разработанные разными фирмами (и успешно нами "куплены"). C портами я работаю через VicX. Отличный ActiveX. Еще и еще раз повторю: что выбор языка я делаю в зависимости от задач! Если мне надо прогу, которая чертит крафик получая данных с какого-то там девайса - я возьму Builder. Если надо сетевую прогу (типа шпиона, сервака, клиента...) то здесь Builder никак не покатит. Кстате, попробуй на Builder свой ActiveX написать, а потом попробуй это же на VC++ - сразу почувствуешь разницу. Все что уже написанно на VC++ можно самому написать на Builder'e, только КПД такой работы будет ->0. |
VladF
|
опубликован 16-10-2001 16:03 MSK
MFC это не пародия, а библиотека (хотя и клюков там дофига и код 16ти разрядный еще встречается...) Но без нее было бы ой как хреново - писать классы для каждой стандартной задачи - это изврат. |
zAg
|
опубликован 16-10-2001 16:11 MSK
Интересно , а насколько схожи MFC и VCL : VCL хоть и громоздка, но представляется мне очень логичной - четкая иерархия классов. Че-то про MFC я такого не слышал. К тому же борланд методично и последовательно развивает VCL - Вон Kylix наваяли - код с исп. VCL - перекомпилится под линух без всяких переделок.
|
Flex Ferrum
|
опубликован 16-10-2001 16:43 MSK
Позволю себе высказаться по поводу схожести этих библиотек. MFC и VCL - это два совершенно разных подхода к программированию под Windows. MFC - это тонкая оболочка над API (ребята из Microsoft даже не удосужились поменять порядок параметров в методах, что в некоторых случаях очень неудобно). VCL - фактически совершенно другое API, оперирующее понятниями, отличными от WinAPI (вы нигде в MSDN Platform SDK не найдете упоминания про canvas, а VCL - это одно из ключевых понятий). Минусом обоих библиотек я считаю отсутсвие возможности множественного наследования библиотченых классов. А большой минус MFC - это борода, растущая от ранних версий, что приводит к тому, что MFC - это, фактически, набор классов, который объектно-ориентированной библиотекой можно назвать с большой натяжкой. |
zAg
|
опубликован 16-10-2001 17:20 MSK
2Flex Ferrum: То есть ты считаешь что нет смысла сломя голову бросать VCL в пользу MFC? Насчет .NET :почитал MSDN - похоже это все-таки замена MFC - поглядите .NET class library - там и потоки и мутексы и registry - короче MFC конец - и если переходить с билдера то на .NET framework, но никак на VC++ 6.0 |
VladF
|
опубликован 16-10-2001 17:26 MSK
Не в обиду будет сказано, как только что выразился мой знакомый (ведущий программист одной компании): Borland это для девочек... От себя добавлю (что мне не нравится в Borland): 1) В Borland help'ы часто-густо пасквилевские! Что само по себе есть изврат. 2) Всегда надо за собой таскать VCL. 3) Если (упаси господь) пользовался в DLL типом AnsiString то еще и borlanmm.dll. А у меня еще такая проблема: пользовался оператором delete (void *) - так пришлось к проэкту приписывать библиотеку (имени не помню) сайзом 1.4 метра!!! Из-за одного оператора! 4) Делать многопоточные приложения ейбогу легче на VC++ (особенно что касается синхронизации патоков). 5) Незнаю почему (возможно мало Builder юзал), но использовать мутексы и создавать регионы из файла (по анологии с VC++) в Builder'e у меня не получилось. 6) Ужасная тормазнутость и неповоротливость Builder сильно действует на нервы (хотя у меня и 850 Duron). 7) И последнее и самое ГЛАВНОЕ: Когда все проэкты писаны на MSVC++ тыкатся туда со своим Builder'ом... Builder это для локальных задач - так сказать для "себя". В фирмах (за редким исключением) пишущих ПО под заказ (а особенно западных инвесторов) ни о каком Builder'e и речи быть не может! Только MSVC++ (C# и .NET еще не внедрились в достаточной степени). |
Flex Ferrum
|
опубликован 16-10-2001 17:50 MSK
zAg: Я имел в виду то, что бросая VCL и пересаживася на MFC надо себе четко предсталять, с чем будешь иметь дело. И переход будет отнюдь не безболезненный. Оптимальный вариант - когда знаешь и то и другое. VladF: Для локальных задач говоришь? Вот тебе примеры пакетов, написанных на Delphi (не Builder, конечно, но близко): HomeSite The Bat! Куча примочек к ораклу (TOAD и т. п.) И еще: если ты пишешь на API, то, по сути, абсолютно паралельно, каким компайлером пользуешься - MS, Borland, GNU, Intel, Vector и т. д., и т. п. - главное, чтобы код генерировал качественный, да глюков поменьше было (в этом отношении, кстати, и MSVC и Borland не самый лучший вариант). |
server_mouse
|
опубликован 16-10-2001 18:47 MSK
>Вот тебе примеры пакетов, написанных на Delphi А посчитай-ка сколько таких на VC. Тем что такие пакеты есть Delphi доказывает лишь своё право на существование, но не на место под солнцем (читай -- одну из лидирующих позиций) на рынке средст разработки. |
Flex Ferrum
|
опубликован 16-10-2001 19:07 MSK
Это доказывает то, что на Delphi и Builder можно писать программы не хуже, чем на MSVC, а утверждение, что "Borland - это для девочек" - не совсем обосновано (доводы, приведнные VladF больше эмоциональные). Иначе Inprise давно бы уже погорела. То, что на MSVC подобных пакетов больше - и ежу понятно. Но это не значит, что они лучше. Глюков везде хватает. |
al
|
опубликован 16-10-2001 19:16 MSK
Помимо всего прочего, MFC сильно "разезжается" со стандартом C++. Например, исключение STL обрабатывается оператором catch, а исключение MFC - макросами CATCH / END_CATCH (кто с этим не согласен, пусть объяснит, кто быдет удалять потомки CException). В MFC есть свой тип строки, в STL - свой. А еще есть ATL/WTL, где свои строки, макросы отладки и т.п.
|
Ursus
|
опубликован 16-10-2001 19:31 MSK
Проблема в том что без try не работает, а при try Do smth не выполняется. Или не может принициализироваться. НА VC тот же код выполняется нормально :) Может у меня Builder криво стал, но вроде когда работаешь с его компонентами все нормально. |
DEiL
|
опубликован 16-10-2001 19:45 MSK
а хотите я ваш спор отправлю в небытиё? а вот смотрите - берёте просто-напросто Borland C++ 5.02 и юзаете спокойно OWL :) |
purpe
|
опубликован 16-10-2001 19:59 MSK
зачем же так жестоко ? :)
|
Emerald
|
опубликован 16-10-2001 20:07 MSK
Я считаю так: те люди, которые считают, что один язык программирования лучше другого - или сами просто не до конца знают возможности языка, или (чаще всего) просто начинающие в программирование люди. Это не в коей мере не относится к тем господам, которые собрались в этом форуме. Просто я хочу сказать, что можно (и я не раз убеждался) выполнить, казалось, невозможную задачу на самом простом языке. И то я здесь не прав - даже Визуал Бэйсик сложен, если учить так вот с напрыгу. Ну а насчёт MFC - может посоветуете, как его проще и быстрее выучить? Даю 100% что нет. Да и мне кажется, что не надо. MFC - просто одна из ступеней в развитии компьютерного мира (как прерывания ДОС) и очень скоро от неё откажутся. Судите сами: в WindowsME майкрософт отказалась от реального досовского режима при загрузке -- что ей помешает сделать то же самое с MFC - резко прекратить поддержку языка своего старого программирования? И что вы будете делать со своими знаниями? Кому они будут нужны в таком случае... То что вы говорите про кучу программ/специалистов - это фигня. Под ДОС написано не меньше программ и ооочень много просто великолепных, но кому они сейчас нужны?? Разве только как реликвии прошлого... Я вот разбираюсь в прерываниях, и что?Я что хочу сказать -- народ! не гонитесь за тем, что круче - это всё меняется. Чисто сядьте и подумайте о том, что: или вы будете спецом в одном (к примеру VB - почему нет??), или вы будете программёром, у которого всегда все работает "почти всегда". Я таких людей встречал кучи (работа позволяет) и скажу честно - толку от них мало. А вот спеца, который шарит даже в том же VB мне и нехватало... |
migel
|
опубликован 16-10-2001 20:17 MSK
MFC не есть язык программирования - :-) и поддерживать библиотеку ИМХО уже резону нету (разве что .NET прикрутить :-))))) Все новые технологии вводяться посредством, новых интерфейсов | DLL. То есть экспансивным путем. А вообще тема - флейм. Каждому свое: "кто жнец, а кто на дуде игрец" Мне например VC отладчик нравится - + аддоны всяки VisualAssist например - так ведь песня просто - скорость +понимание кода выросла неимоверно (все на кончиках пальцев). Глюки тоже есть куда ж без этого - но терпимо. ЗЫ. Но видеть мегабайтные ActiveX уже честно говоря надоело Ж-) |
Emerald
|
опубликован 16-10-2001 20:45 MSK
Полностью согласен. Вот и учу С#. |
server_mouse
|
опубликован 16-10-2001 21:31 MSK
Почесал я тут репу, послушал народ и пошёл учить C#.... Надеюсь он хоть немного напоминает MFC и объектно-ориентирован. Надо идти в ногу с технологиями. Ну хотя бы стараться.А вообще это действительно флейм. Мой напарник пишет на билдере нехилые DLL для Инету, и всё класно пашет. Хотя я предпочитаю VC. |
Emerald
|
опубликован 16-10-2001 23:14 MSK
Мелкософт зеленью покрылось от Явы и выпустило C#. А по натуре - та же Java, только Майкрософтовская (== отстой). |
Ursus
|
опубликован 17-10-2001 10:25 MSK
А мне С# весьма понравился... Это не просто клон Java, это скорее что то среднее между Java, C++ и VB, причем отовсюду взято практически только лучшие стороны. Еще бы работу найти, где C# нужен :) А то пока его мало кто применяет :( |
purpe
|
опубликован 17-10-2001 10:28 MSK
2Emerald: а почему Ява отстой ? :) |
purpe
|
опубликован 17-10-2001 10:36 MSK
и всё-таки я не сторонник спорить на тему "что хорошо, а что не очень". MSVC хорош для создания системных приложений, а так же приложений с пользовательским интерфейсом, хотя и сервера тоже можно ваять, только вот гемороя будет достаточно. Ява идеальна только для серверов, которые можно сразу же запустить и на Винде и на Унихе. Ну а Делфи с билдером я просто не люблю из-за того, что они скрывают от меня кучу нужного кода.спасибо за внимание :)
|
DEiL
|
опубликован 17-10-2001 19:31 MSK
всё, мир, дружба, сосисиська, все ушли в унитаз. я властным движением уха закрываю тему нафиг :) |
Emerald
|
опубликован 17-10-2001 20:44 MSK
2purpe: а время выполнения? а оптимизация? а запара с версиями? а долбанная защита, которая нафиг не нужна? язык оооччень сырой. |
Tesla
|
опубликован 17-10-2001 20:46 MSK
ASM рулез! |
purpe
|
опубликован 17-10-2001 21:52 MSK
2Emerald: скорость меня удовлетворила полностью. Тут вопрос, чей компилятор явы использовать. Если взять MS J++, то это полный отстой. Если взять яву от Sun, то я бы назвал его лучшей явой из яв :)
|
DEiL
|
опубликован 18-10-2001 22:50 MSK
плайать тавагищи! них-я себе топик замутили. раз йа скагал - хватитЪ, значЫт хватитЪ. а то гастгелляйу всех к еб-ой матери -)) |
Ursus
|
опубликован 19-10-2001 15:02 MSK
НУ что ты как не программер, дай потрындеть то людям :) |
Organic
|
опубликован 20-10-2001 12:02 MSK
а что есмь C# ??? |
Organic
|
опубликован 20-10-2001 12:02 MSK
и как оно читаетса :)) |
OlegO
|
опубликован 20-10-2001 13:02 MSK
До-Диез :))А проще Си-Шарп |
dr_slo
|
опубликован 29-12-2001 12:58 MSK
Извините за конкретный вопрос: может кто знает из приверженцев Builder'а, как в егоном ассемблере выполнить команду sgdt? |
Chief
|
опубликован 29-12-2001 13:45 MSK
ну я незнаю..........я блин счас пьян канечно, но пишу под билдером и ваще доволен и сервисы пашут и скорость вполне устраивает и по сетке дышит все )) а то что обьем большой ... ну я незнаю те же мфс весят неменьше а в вцл хорощая проработка функций.....практически все можно сделать, просто это понты (ИМХО) что типа в МФЦ все круто ))) главное как ты можешь выжать сам все из своей среды разработки.....ну все чё-то сумбурно ))) С НОВЫМ ГОДОМ ВСЕХ !!!!!!!!!! P.S. в билдере пользуюсь АПИ и куча косяков )) в самом АПИ.......ведь и VCL и MFC ,базируются на АПИ )) так чё огород городить какая среда лучче? |