Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 01:12   #1
alexkarta
 
Регистрация: 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 программистом
alexkarta вне форума Ответить с цитированием
Старый 01.09.2009, 02:18   #2
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Цитата:
Сообщение от alexkarta Посмотреть сообщение
Как Вы считаете, действительно ли программирование на C/C++ (без дотнет) настолько сложно, что моя производительность труда и отдача приблизится к нулю?
При наличии хороших библиотек и прямых руках по скорости разработки разницы особой не будет. В .NET просто в комплекте идёт мощная библиотека на все случаи жизни, у плюсов такой нет. При грамотном проектировании утечек памяти так же не будет. В C# быстрый старт просто, а в плюсах долго разоняться нужно, но зато, когда разгонишься, то уже никто не остановит
Цитата:
Сообщение от alexkarta Посмотреть сообщение
С чего мне лучше начать освоение C/C++ и библиотек написаных на них? (я накачал кучу книг, но очень сложно их оценить самому) Посоветуйте мне, пожалуйста, хорошую литературу и интересные статьи
Не знаю. Я книжки особо не читаю и авторов не запоминаю. Скорее как справочники использую для поиска ответов на нужные вопросы
Цитата:
Сообщение от alexkarta Посмотреть сообщение
Как Вы оцениваете целесообразность ухода от .net в сторону C/C++ с богатым набором исходных библиотек?
Ну зачем уж так сразу уходить... Их можно и совмещать. На плюсах написали двиок для карт, обернули его в DLL и из C# тягайте себе функции из библиотеки.
Цитата:
Сообщение от alexkarta Посмотреть сообщение
Ваши ответы важны для меня, я стою на перепутье, нет никакой определенности, может в принципе лучше отказатьсяч от моих идей и спокойно работать .net программистом
Вполне может быть, что и стоит спокойно работать в .net. В плюсах тоже не всё так красиво, как хочется. Тут кому что нравится. Попробуйте, может плюсы зацепят, а может и не понравятся. Дело вкуса, как говорится
pu4koff вне форума Ответить с цитированием
Старый 01.09.2009, 02:36   #3
alexkarta
 
Регистрация: 31.08.2009
Сообщений: 7
По умолчанию

Мне, на самом, деле, мне, в целом, дотнет очень нравится. Но, вероятно, в будущем придется либо отказаться от него вообще, либо использовать минимально. Это связано с двумя причинами:
1)Как я уже говорил, нет нормальных картографических дотнет библиотек.
2)Я собираюсь полностью перейти на Linux (так как сервер Windows меня категорически не устраивает), а Linux и .net (Mono) на сегодняшний день - неполноценная связка (и вряд ли ситуация в корне поменяется). Хотя, я с уважением отношусь к моно и считаю, что ребята сделали серьезный проект (учитывая, что .net/windows закрытая платформа)
alexkarta вне форума Ответить с цитированием
Старый 01.09.2009, 09:28   #4
LaptevVV
Пользователь
 
Регистрация: 15.08.2009
Сообщений: 37
По умолчанию

1. Советую попробовать Java. Может быть на нем есть все, что вам нужно?
После C# не должно быть проблем с переходом на э'mjn язык, ибо по идеологии - очень похожи. Плюс Java - свободное ПО.
2. Основная заморочка в С++ - это динамическая память и указатели. Приходится быть внимательным, и тщательно за собой убирать.
В С++ есть хорошая стандартная бибилиотека, так что с контейнерами проблем не будет.
3. С++ стандартизирован и стандартная часть поддерживается всеми компиляторами. И еще добавляют своего. Например, в дотнет есть версия C++/CLI - расширение С++ до идей дотнета и C#
Начинать лучше с книжки Стенли Липпмана. С++ primer. В сети даже есть перевод на русский.
LaptevVV вне форума Ответить с цитированием
Старый 01.09.2009, 11:09   #5
ds.Dante
Старожил
 
Аватар для ds.Dante
 
Регистрация: 06.08.2009
Сообщений: 2,992
По умолчанию

Программы на C++ в целом быстрее, что важно, например, при математическом моделировании; и вообще на нем, имхо, легче писать алгоритмы "общего назначения". В то же время этот язык очень не удобен для работы с .NET - по мере увеличения программы он превращается в Brainfuck. :) На данный момент C# мне представляется несколько полезнее, но C++ - это фундамент, знание которого пригодится и через 30 лет. К тому же он включает в себя обычный Си - язык среднего уровня (с указателями, разными преобразованиями типов, и т. д.)
ds.Dante вне форума Ответить с цитированием
Старый 01.09.2009, 11:46   #6
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Реально посмотрите в сторону Java. Может к ней есть нужные библиотеки. После C# особых проблем с переходом не должно быть. В плюсах много особенностей языка всплывёт и после работы с GC могут появиться непонятки.
Например, так строки в сях нельзя объединять:
Код:
string str = "a" + "b";
Но компилятор промолчит и получится трудноуловимая ошибка времени исполнения
Так что смотрите. Переход на яву, по идее, будет менее болезненный и побыстрее. С плюсами же скорее всего придётся повозиться.
pu4koff вне форума Ответить с цитированием
Старый 01.09.2009, 22:58   #7
alexkarta
 
Регистрация: 31.08.2009
Сообщений: 7
По умолчанию

Наверное, для современного программиста, как минимум, необходимо иметь представление о С/С++, Java и .NET. И, в зависимости от задач, выбирать-осваивать оптимальную технологию. Java - создание кроссплатформенных приложений с закрытым исходным кодом, .NET - стильные приложения с использованием WPF, C/C++ - для математического моделирования и т.д. Мобильность - залог успеха. Но, с другой стороны, мне больше нравиться вариант с глубоким освоением определенной технологии (правда можно стать заложником своих узких взглядов).

Посоветуйте мне, пожалуйста, оптимальные средства разработки под Linux на языках C, C++, Java.
На чем чаще всего пишут программы??? Книги, которые я листал на кануне описывали процесс программирования на C, C++ в текстовом консольном редакторе, с последующей консольной компиляцией. Разве реально писать крупные проекты таким способом???

Последний раз редактировалось alexkarta; 01.09.2009 в 23:03.
alexkarta вне форума Ответить с цитированием
Старый 01.09.2009, 23:50   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
Java - создание кроссплатформенных приложений с закрытым исходным кодом
С закрытым? Java файлы декомплируются на раз, и вы получаете полный исходный код. Так же как и .NET приложения.

По сабжу:
Для проектов - Eclipse, NetBeans. Просто хорошие редакторы - vim + компилятор(gcc, g++ и т.д.)
MaTBeu вне форума Ответить с цитированием
Старый 02.09.2009, 00:59   #9
alexkarta
 
Регистрация: 31.08.2009
Сообщений: 7
По умолчанию

спасибо, протестирую
alexkarta вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопросы по 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