|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
01.09.2009, 01:12 | #1 |
Регистрация: 31.08.2009
Сообщений: 7
|
C/C++ vs C#. Философские вопросы
Я начинающий программист. 3 года назад после универа жизнь заставила занятся программированием. Я не представлял с чего начать. Обошел книжные магазины, посидел на форумах и выяснил, что только C#/.net/visual studio/microsoft. Прочитал и освоил большое количество литературы, за три года прилично набил руку и уже год, как зарабатываю .net программированием на жизнь.
Я за эти три года прилично развился и стал понимать, что мне действительно хочется. Моей мечтой стала разработка картографического веб-портала объединяющего возможности основных картографических сервисов (типа GMaps, YandexMaps...), плюс добавляющего богатые географические функции (я по образованию картограф). Поскольку на развитие сайта не было денег, вариант его функционирования по Windows отпал сразу.Главным условием стало использование бесплатных библитек и программ под Linux. Я начал осваивать программирование в Mono и потирал руки, что без проблем перенесу свои разработки .net/Windows в mono/Linux. В процессе переноса обнаружил, что все используемые мной картографические ".net" библиотеки основную функциональность черпают из каких-то unmaneged dll. Выяснилось, что 90% картографического ПО (в том числе коммерческого) базируются на этих самых DLL, а их исходный код представлен в Интернете. Оказалось, что ничего подобного не разработано под .net, по сравнению с мощнейшими библиотеками с открытым исходным кодом на C/C++ (это OGR/GDAL, MapServer и т.п.). Начитавшись книг по C# я стал относиться к C/C++, как к устаревшим и безперспективным технологиям. Книги по .net объяснили мне, что я лечу по хайвею на мерседесе с АКПП, а программисты на C/C++ - это инвалиды, которые еле плетутся по обочине, и все время тратят на управление памятью и отладку программ. Да, я действительно несусь по хайвею, но, боюсь, что в неправильном направлении, а в нужном направлении дороги нет, туда нужно идти только пешком. Под дотнет просто не существует приличных картографических библитек. Все, что я нашел - это недоделанные SharpMap и MapWindow, которые базируются на GDAL/OGR (мощная библитека с открытым исходным кодом на C/C++) 3 года назад меня заверили, что только .net, а, тем временем, технология не реализовала основной принцип - кросспратформенность. Проект VisualStudio зачастую очень сложно запустить в MonoDevelop. Т.е. имея исходный код на С# нет гарантии, что его получится скомпилировать. Я уже молчу про случаи, когда нет исходного кода. В общем, у меня появилось ощущение, что меня жестко обманули. Я использую .net 3.5,visual studio 2008, хотя большинство моих задач решаются при помощи блокнота и консольного компилятора. Теперь Visual Studio у меня в крови. Я стреляю по воробям межконтинентальной баллистической ракетой.При этом начинка ракеты - камни, ведь как оказалось все библитеки основываются на бесплатных разработках с открытым исходным кодом на C/C++. Я бы хотел научится анализировать открытый исходный код на c/c++. Я не знаю, по силам ли мне это. Я боюсь, что увязну. Как Вы считаете, действительно ли программирование на C/C++ (без дотнет) настолько сложно, что моя производительность труда и отдача приблизится к нулю? С чего мне лучше начать освоение C/C++ и библиотек написаных на них? (я накачал кучу книг, но очень сложно их оценить самому) Посоветуйте мне, пожалуйста, хорошую литературу и интересные статьи Как Вы оцениваете целесообразность ухода от .net в сторону C/C++ с богатым набором исходных библиотек? Ваши ответы важны для меня, я стою на перепутье, нет никакой определенности, может в принципе лучше отказатьсяч от моих идей и спокойно работать .net программистом |
01.09.2009, 02:18 | #2 | |||
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Цитата:
Цитата:
Цитата:
Вполне может быть, что и стоит спокойно работать в .net. В плюсах тоже не всё так красиво, как хочется. Тут кому что нравится. Попробуйте, может плюсы зацепят, а может и не понравятся. Дело вкуса, как говорится |
|||
01.09.2009, 02:36 | #3 |
Регистрация: 31.08.2009
Сообщений: 7
|
Мне, на самом, деле, мне, в целом, дотнет очень нравится. Но, вероятно, в будущем придется либо отказаться от него вообще, либо использовать минимально. Это связано с двумя причинами:
1)Как я уже говорил, нет нормальных картографических дотнет библиотек. 2)Я собираюсь полностью перейти на Linux (так как сервер Windows меня категорически не устраивает), а Linux и .net (Mono) на сегодняшний день - неполноценная связка (и вряд ли ситуация в корне поменяется). Хотя, я с уважением отношусь к моно и считаю, что ребята сделали серьезный проект (учитывая, что .net/windows закрытая платформа) |
01.09.2009, 09:28 | #4 |
Пользователь
Регистрация: 15.08.2009
Сообщений: 37
|
1. Советую попробовать Java. Может быть на нем есть все, что вам нужно?
После C# не должно быть проблем с переходом на э'mjn язык, ибо по идеологии - очень похожи. Плюс Java - свободное ПО. 2. Основная заморочка в С++ - это динамическая память и указатели. Приходится быть внимательным, и тщательно за собой убирать. В С++ есть хорошая стандартная бибилиотека, так что с контейнерами проблем не будет. 3. С++ стандартизирован и стандартная часть поддерживается всеми компиляторами. И еще добавляют своего. Например, в дотнет есть версия C++/CLI - расширение С++ до идей дотнета и C# Начинать лучше с книжки Стенли Липпмана. С++ primer. В сети даже есть перевод на русский. |
01.09.2009, 11:09 | #5 |
Старожил
Регистрация: 06.08.2009
Сообщений: 2,992
|
Программы на C++ в целом быстрее, что важно, например, при математическом моделировании; и вообще на нем, имхо, легче писать алгоритмы "общего назначения". В то же время этот язык очень не удобен для работы с .NET - по мере увеличения программы он превращается в Brainfuck. :) На данный момент C# мне представляется несколько полезнее, но C++ - это фундамент, знание которого пригодится и через 30 лет. К тому же он включает в себя обычный Си - язык среднего уровня (с указателями, разными преобразованиями типов, и т. д.)
|
01.09.2009, 11:46 | #6 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,085
|
Реально посмотрите в сторону Java. Может к ней есть нужные библиотеки. После C# особых проблем с переходом не должно быть. В плюсах много особенностей языка всплывёт и после работы с GC могут появиться непонятки.
Например, так строки в сях нельзя объединять: Код:
Так что смотрите. Переход на яву, по идее, будет менее болезненный и побыстрее. С плюсами же скорее всего придётся повозиться. |
01.09.2009, 22:58 | #7 |
Регистрация: 31.08.2009
Сообщений: 7
|
Наверное, для современного программиста, как минимум, необходимо иметь представление о С/С++, Java и .NET. И, в зависимости от задач, выбирать-осваивать оптимальную технологию. Java - создание кроссплатформенных приложений с закрытым исходным кодом, .NET - стильные приложения с использованием WPF, C/C++ - для математического моделирования и т.д. Мобильность - залог успеха. Но, с другой стороны, мне больше нравиться вариант с глубоким освоением определенной технологии (правда можно стать заложником своих узких взглядов).
Посоветуйте мне, пожалуйста, оптимальные средства разработки под Linux на языках C, C++, Java. На чем чаще всего пишут программы??? Книги, которые я листал на кануне описывали процесс программирования на C, C++ в текстовом консольном редакторе, с последующей консольной компиляцией. Разве реально писать крупные проекты таким способом??? Последний раз редактировалось alexkarta; 01.09.2009 в 23:03. |
01.09.2009, 23:50 | #8 | |
Eclipse Foundation
Старожил
Регистрация: 19.09.2007
Сообщений: 2,604
|
Цитата:
По сабжу: Для проектов - Eclipse, NetBeans. Просто хорошие редакторы - vim + компилятор(gcc, g++ и т.д.) |
|
02.09.2009, 00:59 | #9 |
Регистрация: 31.08.2009
Сообщений: 7
|
спасибо, протестирую
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопросы по if, else? | molodoyy | Помощь студентам | 5 | 21.03.2010 15:34 |
Вопросы по if, else? | molodoyy | Общие вопросы C/C++ | 1 | 25.10.2008 18:55 |
Вопросы по сети | EminiO | Помощь студентам | 2 | 16.07.2008 23:06 |
вопросы | MAcK | Win Api | 7 | 21.07.2007 18:08 |