Здравствуйте многоуважаемый All. Задумался вот над таким вопросом. В последнее время на РСДН многие дотнетчики, стуча пяткой в грудь, советуют новичкам не браться за С++. Мол, .Net платформа будущего, забудьте об указателях, утечках памяти и access violations, переходите на полностью управляемый код, создавайте приложения быстрее и т.д. Avalon уже грохочет железной пятой и дышит в ухо. Еще один немаловажный аргумент — C#-программеру проще устроиться на работу, а начинающий плюсовик никому и даром не сдался... Все конечно правильно, НО ИМХО...
— Дойдя до мало-мальски нетривиальной задачи, приходится применять средства наподобие COM Interop и P/Invoke;
— Налицо необходимость изучения COM/ActiveX;
— Далее по нисходящей: изучая ActiveX, не обойтись без C++/ATL/MFC...
— В конце концов, дорожка выводит к голому С/WinAPI.
В итоге вопрос: а может ли существовать в природе виндовый программист, знающий только "вершки", и не подозревающий о "корешках". Это ж какой-то скрипт-кодер получается.
И вот еще что: большинству присутствующих здесь гуру, как я понимаю, легко советовать, имея за спиной базовый опыт C/C++/MFC/ATL/COM/ActiveX/WinAPI, а что делать салагам
P.S. Если можно, особо камнями и баянами не кидайтесь.
Здравствуйте, beerserg, Вы писали:
B>Здравствуйте многоуважаемый All. Задумался вот над таким вопросом. В последнее время на РСДН многие дотнетчики, стуча пяткой в грудь, советуют новичкам не браться за С++. Мол, .Net платформа будущего, забудьте об указателях, утечках памяти и access violations, переходите на полностью управляемый код, создавайте приложения быстрее и т.д. Avalon уже грохочет железной пятой и дышит в ухо. Еще один немаловажный аргумент — C#-программеру проще устроиться на работу, а начинающий плюсовик никому и даром не сдался... Все конечно правильно, НО ИМХО... B>- Дойдя до мало-мальски нетривиальной задачи, приходится применять средства наподобие COM Interop и P/Invoke; B>- Налицо необходимость изучения COM/ActiveX; B>- Далее по нисходящей: изучая ActiveX, не обойтись без C++/ATL/MFC... B>- В конце концов, дорожка выводит к голому С/WinAPI.
Она и дальше ведет — в драйвера. Но большинству и WinAPI уже не нужен. Изучая ActiveX, и с++ не нужен. Насколько я понимаю, c# позволяет делать с COM'ом дофига всего и не хуже, и, что важно, безопаснее. А MFC уже очень давно бесполезен.
B>В итоге вопрос: а может ли существовать в природе виндовый программист, знающий только "вершки", и не подозревающий о "корешках". Это ж какой-то скрипт-кодер получается.
Может, и это — правильно. Корешки — это irq, gdt и т. п. вещи, о которых тут мало кто понимает
B>И вот еще что: большинству присутствующих здесь гуру, как я понимаю, легко советовать, имея за спиной базовый опыт C/C++/MFC/ATL/COM/ActiveX/WinAPI, а что делать салагам
Базовый опыт C/C++ все таки нужен, чтобы более-менее понимать как это работает. Особенно если подглядывать в дизассемблер. Но сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился.
Здравствуйте, kittown, Вы писали:
>> (!!!) c++ долго не протянет, слишком сложный и корявый язык получился. K>Сложный. Корявый. Все равно протянет.
Я имел ввиду что он займет свою достаточно узкую нишу как чистый си, фортран или датафлекс, но большинство различного софта будет писаться совсем не на нем.
Здравствуйте, aik, Вы писали:
aik>Базовый опыт C/C++ все таки нужен, чтобы более-менее понимать как это работает. Особенно если подглядывать в дизассемблер. Но сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился.
Сложный — да. Корявый — я бы не сказал. Есть конечно несколько нехороших моментов, но в целом я доволен
new RSDN@Home(1.1.4, 303) << new Message(); std::head::ear << "Iscaaro — Fold Your Hands And Pray";
aik wrote: > >> > (!!!) c++ долго не протянет, слишком сложный и корявый язык получился. > K>Сложный. Корявый. Все равно протянет. > > Я имел ввиду что он займет свою достаточно узкую нишу как чистый си, > фортран или датафлекс, но большинство различного софта будет писаться > совсем не на нем.
Я, в свою очередь, до сих пор фигею, как здоровые толпы разработчиков
по сей момент отрицают c++ и продолжают писать околосистемные вещи
на C. Две основные десктоповые среды под *nix-ами именно так и
разделены, одна команда сишников и одна плюсовиков. Единственная
привлекательная (на мой взгляд) встраиваемая БД sqlite написана
именно на C, а не на C++.
В общем, сдается мне, что "мейнстрим" — это химера. Нет никакого
такого мейнстрима, а весь софтодевелопмент представляет собой
большое количество более или менее узких ниш, более чем на 90%
состоящих из поддержки и инкрементальной доработки уже
существующих систем.
Hello, beerserg!
You wrote on Tue, 02 Aug 2005 09:54:18 GMT:
b> Здравствуйте многоуважаемый All. Задумался вот над таким вопросом. В b> последнее время на РСДН многие дотнетчики, стуча пяткой в грудь, b> советуют новичкам не браться за С++.
Ну да, не такая простая штука как C# если рассматривать в полном объеме, хотя как по мне так это "замена одних проблем на другие" (с) Не мой.
b> Мол, .Net платформа будущего,
Ну то что она в mainstream-е и будет в нем еще долго это конечно да. Так что лучше знать, чем не знать.
b> забудьте об указателях, утечках памяти и access violations,
Один из мифов C++. Я про все эти приколы давно забыл. Не, ну вылазят иногда, но частота их появления будет сравнима с появлением Null pointer exception или как они там в C#.
b> переходите на полностью управляемый код, создавайте b> приложения быстрее и т.д.
Про быстрее это возможно правда — для новичка. Для неновичка количество необходимых для работы компонент и библиотек третьих сторон уже больше нуля и скорость в С++ будет таже.
b> Avalon уже грохочет железной пятой и дышит в b> ухо. Еще один немаловажный аргумент — C#-программеру проще устроиться на b> работу, а начинающий плюсовик никому и даром не сдался...
Я бы так не сказал . Грамотных плюсантиков из универов не выпускают. Пока ни одного не видел. Может мало смотрел конечно. Их можно только научить уже в процессе, чтобы рядом были один-два грамотных спеца. Вот тогда процесс идет в нужном русле и с положительными результатом.
b> В итоге вопрос: а может ли существовать в природе виндовый программист, b> знающий только "вершки", и не подозревающий о "корешках". Это ж какой-то b> скрипт-кодер получается.
Может это и новость для тебя, но очень много людей про "корешки" не знают и знать не хотят. Они просто пишут и в подноготную не лазят. А когда шарахнет не по детски идут вот к такому уникуму который знает все вдоль и поперек и задают ему вопрос. Получают решение проблемы и спокойно идут работать дальше.
b> И вот еще что: большинству присутствующих здесь гуру, как я понимаю, b> легко советовать, имея за спиной базовый опыт b> C/C++/MFC/ATL/COM/ActiveX/WinAPI, а что делать салагам
Я не гуру, но что-то посоветовать наверно могу.
Все зависит от того какие ты себе цели ставишь. С# это mainstream и как ты сам говоришь легко найти работу и достаточно хорошо оплачиваемую. Язык очень легко учится, если знаешь что-то С подобное. С++ многообразнее и соответственно сложнее, но как по мне, так он этого стоит. С# и С++ достаточно похожи синтаксически, основная проблема это библиотеки. Без них можно сказать что ты знаешь какой-то язык, но сделать в разумные сроки что-либо ты просто не сможешь.
Сечас наверно чтобы заработать нормальные деньги лучше идти на шарповика. Плюсатники нужны толковые, с опытом, потому как оружие у них достаточно острое и новички очень глубокие раны оставляют .
aik>... Но сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился.
Все это уже было! Что-то типа середины 90х внедряли на предприятии(родители супруги) большую сложную систему и размышляли — "Ну млин и нафиг нам этот опыт?! Система сложная, корявая, большай, стоит кучу бабла. Внедрим мы ее и что?! Кому он будет нужен этот опыт потом". Причем считали так все. Некоторые даже переводились в другие отделы..
Здравствуйте, beerserg, Вы писали:
B>- Дойдя до мало-мальски нетривиальной задачи, приходится применять средства наподобие COM Interop и P/Invoke; B>- Налицо необходимость изучения COM/ActiveX; B>- Далее по нисходящей: изучая ActiveX, не обойтись без C++/ATL/MFC...
Зачем? Подключаешь COM к проекту (мышкой так ласково клик по add reference... ) и пользуешь его. Зачем нафиг голову себе забивать всякой ерундой?
B>- В конце концов, дорожка выводит к голому С/WinAPI.
Далеко не всем голый WinAPI нужен, а если всё таки и пондобился, то разобраться в этом значительно проще, чем сидя на с-ях. Слишком там много нужно телодвижений.
B>В итоге вопрос: а может ли существовать в природе виндовый программист, знающий только "вершки", и не подозревающий о "корешках". Это ж какой-то скрипт-кодер получается.
Есть такие, работают программистами, деньги хорошие получают, домой приходят и отдыхают от компьютеров. А всяким там гуру мало места осталось, да и не платят уже давно за "очень глубокое знание глубин Windows". Расслабься, 5 лет назад та же фигня была и с ассемблером, типа не знаешь — не программист, и ничего, росли современные мастера
B>И вот еще что: большинству присутствующих здесь гуру, как я понимаю, легко советовать, имея за спиной базовый опыт C/C++/MFC/ATL/COM/ActiveX/WinAPI, а что делать салагам
Всё было, и С++, и COM. Но это просто так получилось, что .NET на этих технологиях построен. Могли бы его и с нуля поднять, не задумываясь о мегатноннах с-ишного кода, но политика не позволила... Так что ну это старьё на фиг, кому надо — пусть работает, а молодёжь пусть вперёд двигает (мля, сказал и так тяжело на душе стало )
По сути вопроса: в природе существовать может. И существуют.
Только захочешь ли ты жить в той нише, в которой они кормятся?
>а что делать салагам
Зависит от целей / ситуации конкретного салаги.
Если хочешь как можно быстрее найти работу в определенной области — там выбор ясен должен быть.
Если firmware писать — на VB.NET вряд ли надо упирать,
а если ecommerce — то на алгориты разпознавания образов и asm тоже много времени не трать.
Если это все равно — тогда определяешься с рынком труда, где продаваться будешь.
Если ты человек мира — учи английский пуще чем C++, Java, VB, C# вместе взятые.
Если предпочитаешь тихую жизнь в Бобруйске и пиво вечером на завалинке — 1с, vba, WSH и обсуживание манипулятора "мышь" :)
Короче амбиции определят дорожку. Будь гибким, найди в жизни цель и мечту, эх...
Везет молодым...
Здравствуйте, User99, Вы писали:
aik>>... Но сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился.
U>Все это уже было! Что-то типа середины 90х внедряли на предприятии(родители супруги) большую сложную систему и размышляли — "Ну млин и нафиг нам этот опыт?! Система сложная, корявая, большай, стоит кучу бабла. Внедрим мы ее и что?! Кому он будет нужен этот опыт потом". Причем считали так все. Некоторые даже переводились в другие отделы..
U>Как называлась система — сами догадаетесь.
aik,
> сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился.
Интересно, что подобные же предсказания делались, когда Java только-только вышла. Уже прошло прилично времени, а на десктопах ее по-прежнему не особенно заметно.
Posted via RSDN NNTP Server 2.0 beta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, SergeCpp, Вы писали:
SC>>Всё деньги определяют, да ? SC>>И чтоб поменьше работать, да ?
SC>>Да, уж...
E>А что? Вполне нормальная жизненная позиция. Не у всех же программирование -- это работа, хобби и стиль жизни одновременно.
Да я не против, просто у каждого — СВОЁ понятие "НОРМАЛЬНОЙ жизненной позиции"...
А здесь почему-то высказываются в основном о "ленивой и денежной"...
Вот я и добавил СВОЮ, чтобы "уравновесить"...
Здравствуйте, Павел Кузнецов, Вы писали:
>> сильно въезжать в c++ имхо уже не стоит, лучше эти силы потратить на .net/java. имхо (!!!) c++ долго не протянет, слишком сложный и корявый язык получился. ПК>Интересно, что подобные же предсказания делались, когда Java только-только вышла. Уже прошло прилично времени, а на десктопах ее по-прежнему не особенно заметно.
С жавой заминка вышла потому что ее не MS продвигает
Зато КАЖДАЯ новая мобила умеет исполнять жава-аплеты, кроме уж откровенно дешевых.
Здравствуйте, beerserg, Вы писали:
B>И вот еще что: большинству присутствующих здесь гуру, как я понимаю, легко советовать, имея за спиной базовый опыт C/C++/MFC/ATL/COM/ActiveX/WinAPI, а что делать салагам
Я скажу так. Несомненно на сегодня ценность специалиста знающего "C/C++/MFC/ATL/COM/ActiveX/WinAPI" намного выше чем знающего какой-то один другой язык и умеющий вести разработку ПО на нем (имеется в иду не ламер, а действительно специалист). Однако чем дальше в лес, тем меньше эти технолгии нужны. К тому же их можно смело изучать параллельно.
В конце концов "C/WinAPI" это в сотни раз проще чем современных хардкорный С++ в стиле Александреску. По существу С — это подмножество C#. За неотороым исключением: расширенный прероцессор, опасные конструкции (за исключением указателей), необходимость предварительной декларации и, пожалуй, старый Ричевский синтаксис который еще порою встречается в программах.
MFC/ATL знать вообще не имеет смысла. Это технологии явно прошлого века. На том же C# можно с успехом создавать COM-объекты. Причем COM в дотнете выглядит довольно прозрачно. К концепциям того же Шарпа добавляется всего ничего (декларативное описание класса атрибутами).
ActiveX? Он как и MFC/ATL смысла в будущем не имеет. Даже контолы Винформсов намного более удобны, надежны и гибки.
В общем, я бы на месте начинающего виндовс-программиста изучил бы C#, а пот по тихоничку доучил бы: C, COM, WinAPI и C++ (в приведенном порядке). За одно было бы неплохо изучить и какой-нибудь функциональный язык (ФЯ), так как это действительно позволяет мыслить более широко (несколько иначе чем вслит обычный императивный программист). Кстати, изучение ФЯ позволо бы избежать комплек помешанности на крутости С++, так как почти любой ФЯ демонстрирует то что все супер-мега-крутости С++ это всего лишь жалкая породия на оригиналы из других языков.
Ну, а возможность использования в дотнете разных языков позволит решать задачи наиболее эффективно и безопасно.
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, kittown, Вы писали:
K>В общем, сдается мне, что "мейнстрим" — это химера. Нет никакого K>такого мейнстрима, а весь софтодевелопмент представляет собой K>большое количество более или менее узких ниш, более чем на 90% K>состоящих из поддержки и инкрементальной доработки уже K>существующих систем.
От части ты прав. Но всегда есть языки/технолгии которые привалируют. Они и являются мэйнстримом на данном промежутке времени.
Что же касается твоего примера, то он имеет два изяна. Первый — ГУИ-оболочки начали писать давно. В те времена предвзятость к С++ была очень высокой, небыло эффективных компиляторов С++ и сам язык был далеко не тем чем он стал после 2000-го года. Второй — все что связанно с ОС всегда считалось системными задачами и люди то ли от косности, то ли от чувства единообразия пытались писать все чт связано с ОС на языке на котором написана сама ОС.
Но времена меняются. С++ уже плотно вошел в околосистемный мир. В NT Explorer уже давно пишется на С++. В Линуксе тоже не мло делается на С++. Новая версия NT — Longhorn вообще содержит море дотнетного-кода основаная часть которого написана на C#.
Если заглянуть в будующее, то я не сомневаюсь, что со временем для C# появятся отличные опримизирующие компиляторы (как JIT так и Пре-JIT). Язык обрастет действительно нужными вещами и избавится от недостатков. А может быть появится еще один новый язык который учетет ошибки старого. Ведь опыт полного отказа от совместимости уже есть и он прошел успешно. Страхи о поддержке легаси-кода явно были надуманными. Дотнет как платформа играючи решает эту и многие другие проблемы.
Ну, а дотнет (или Ява) как движок для современного ПО — это, по-моему, очень верное направление. Опять же не все пока что гладко. И оптимизации нужны. И возможности кое где можно было бы расширить. Но в цело...
... << RSDN@Home 1.2.0 alpha rev. 591>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.