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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.01.2011, 13:24   #1
mr_mag
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 3
Лампочка Нужно определиться с выбором

Прошу не пинать ногами, если создал тему не в том разделе, логичнее всего показалось именно здесь.

Я увлекаюсь программированием довольно давно, но в основном занимался программированием для web на php и js.

Захотелось писать приложения для windows. И тут я несколько растерялся - кучая языков, библиотек, стандартов, на разных форумах хвалят разные языки, по принципу, своя рубашка к телу ближе...

С программированием для windows знаком весьма поверхностно, знаю синтаксис с++ и с#, писал в с# простенькие программы не выходя за рамки стандартных классов .net. Сейчас планирую заняться разработкой программы, в которую должен быть встроен функционал файл - шреддера и записи dvd/bd дисков.

В привычном для меня с# можно реализовать первое, но c imapi2 работать в нем нельзя. Можно конечно прикрутить библиотеки imapi к проекту, я даже нашел, как это делать, но хочется, чтобы все было сделано своими руками и я понимал, как это работает.

Так все - таки, на какой язык стоит учить? Я так понял, на с++ и mfc написано подавляющее большинство прог для форточек, а мелкософт вообще пишет на с++ и winapi... Но mfc хаят, мелкософт пишет, что это прошлый век, нужно учить .net, т.е. с#. Но работать с winapi через шарп это сродни мазахизму, имхо. Хвалят Qt. Скачал, поставил. Просто, логично, документация на высоте... Но если выходить за рамки библиотек Qt то к черту летит кроссплатформенность и контролы в нем только основные, маловато их. Чтобы свои делать или изменять существующие, мне еще расти и расти...

С++/CLI тоже хают, да и смысл - конечно, удобно работать с api, windows forms и wpf позволяют латать за пять минут офигенные интерфейсы, но для запуска ведь нужен фреймворк весом в 70 мб, с++ компилирует независимый бинарник только для программ win32/mfc?

Так все таки, куда сейчас движется программирование для windows? Какой язык лучше учить? c# или c++? Если плюсы, то какие библиотеки использовать? Вряд ли я смогу осилить несклько языков, поэтому хочется определиться и учить что - то одно, наиболее актуальное в будущем.

Еще раз напомню, программирование для меня это больше хобби и приробаток, но никак не профессия.

Заранее спасибо за вразумительные отзывы. Если не можете сказать что - либо по теме, пожалуйста, не устраивайте флуд и стеб над вопросом. Спасибо.

Последний раз редактировалось mr_mag; 28.01.2011 в 13:26.
mr_mag вне форума Ответить с цитированием
Старый 28.01.2011, 14:04   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> Так все таки, куда сейчас движется программирование для windows?

Вникуда. Вот так и пишем запись двд на С++, окошки на сшарп, кроссплатформеное чудо на Qt, загручики на асме, сайты на ASP+MVC, а студенты на Дельфи )
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 28.01.2011, 14:23   #3
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Я так понял, на с++ и mfc написано подавляющее большинство прог для форточек
MFC очень редко сейчас используют...
p51x вне форума Ответить с цитированием
Старый 28.01.2011, 14:42   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Используй Qt. А каких виджетов не хватало? Да и никуда кроссплатформенность не полетит, если будешь свои создавать :/.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 28.01.2011, 15:55   #5
mr_mag
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 3
По умолчанию

Огромное спасибо за ответы!

Получается, что оптимальным вариантом будет написание интерфейсов и всего, что укладывается в рамки стандартных библиотек, на с# под .net, а на с++ при помощи winapi выполнять нестандартные задачи и заливать код в библиотеки, которые использовать опять же, под с#?

Создавать библиотеки и писать код на с++ будет удобнее в qt, или же стоит юзать вижуал c++ ?
mr_mag вне форума Ответить с цитированием
Старый 28.01.2011, 16:24   #6
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Что за нестандартные задачи ты имеешь в виду?

На Qt есть много всего — начиная от базовых контейнеров (аналог STL, но есть java-like итераторы), кончая работой с мультимедией, сетью, БД... ИМХО, Qt сейчас лучшее для программирования гуёв. Если будешь ботать Qt/C++, из тебя получится довольно универсальный программист. Ещё можно смотреть в сторону Qt/Python, но это, я так понимаю, ты и не рассматриваешь.

MFC это ужас и мракобесие. Ни тебе ООП, ни тебе компактного и понятного кода.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 28.01.2011 в 16:37.
Obey-Kun вне форума Ответить с цитированием
Старый 28.01.2011, 17:45   #7
mr_mag
Новичок
Джуниор
 
Регистрация: 28.01.2011
Сообщений: 3
По умолчанию

Цитата:
Что за нестандартные задачи ты имеешь в виду?
Может я неправильно выразился - но для меня, например, реализация записи на dvd задача нетривиальная

В .net фреймворке не реализовано взаимодействие с imapi, поэтому чтобы припаять такой функционал к программе на c# придется писать часть кода на c++ и win api, а потом закатывать в dll и уже в таком виде подключать их к проекту.

Остался один вопрос, что лучше и удобнее - писать код c++ без использования каких - либо библиотек, используя только нативный язык и win api, или все же писать под c++/qt, используя win api только в случае крайней необходимости?

Компилятор получше в Visual Studio 10 express или в qt creator (open source)? Как IDE qt creator мне показался удобнее, да и бегает на порядок шустрее.

Еще забыл спросить. Вот к примеру, мне нужно сделать файловый шредер. По сути, открыть файл в потоке, и перезаписать его содержимое n число раз заданным байтом по определенной схеме. Задача достаточно тривиальная, но есть одно но. Как быть с правами доступа к файлам и папкам под семеркой? В шарпе для этого описано отдельное пространство имен и проверить права доступа к файлу и получить их в случае необходимости, проблемы на составляет. А как сделать это на qt? Я не нашел этого в документации.

Последний раз редактировалось Stilet; 30.01.2011 в 11:11.
mr_mag вне форума Ответить с цитированием
Старый 28.01.2011, 18:04   #8
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
Компилятор получше в Visual Studio 10 express или в qt creator (open source)? Как IDE qt creator мне показался удобнее, да и бегает на порядок шустрее.
В visual studio несовместимый со стандартами компилятор, что иногда бесит (нельзя сделать int[n] для не константной n, например), в qt creator mingw и удобная система сборки (qmake, можно cmake). Плюс, в qt creator встроен дизайнер форм (но лично я пишу код по старинке, без форм). Сам я, правда, использую kdevelop в качестве IDE, но под винду его нету.

Цитата:
Остался один вопрос, что лучше и удобнее - писать код c++ без использования каких - либо библиотек, используя только нативный язык и win api, или все же писать под c++/qt, используя win api только в случае крайней необходимости?
Мой ответ однозначный — выжми из Qt максимум. Win API тебе действительно редко пригодится. Запись дисков — это ты просто удачно подобрал пример . Да и несколько на разных уровнях они находятся. Вряд ли сегодня здравомыслящие люди используют winapi в качестве графического тулкита.

Цитата:
Как быть с правами доступа к файлам и папкам под семеркой? <...> А как сделать это на qt? Я не нашел этого в документации.
QFile::рermissions() же
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 28.01.2011 в 18:16.
Obey-Kun вне форума Ответить с цитированием
Старый 29.01.2011, 00:30   #9
ACE Valery
Сама себе режиссер
Старожил
 
Аватар для ACE Valery
 
Регистрация: 27.04.2007
Сообщений: 3,378
По умолчанию

Цитата:
поэтому хочется определиться и учить что - то одно, наиболее актуальное в будущем.
Никогда, слышите, никогда не будет чего-то одного актуального. Актуальны множество языков в зависимости от задач. И никто не знает ничего о будущем.
Хороший программист может за пару недель-месяц перестроиться на новый язык. Хотя если это не работа, а хобби, то вряд ли придется перестраиваться. Вообще тут, мне кажется, тот случай, когда приходится учиться на своих ошибках, и выбрать язык методом проб, потому что в этом вопросе каждый вам будет отвечать именно из принципа "своя рубашка к телу ближе".

Цитата:
В visual studio несовместимый со стандартами компилятор, что иногда бесит (нельзя сделать int[n] для не константной n, например)
А можете мне кинуть цитату из стандарта, которая говорит, что можно сделать int[n] для неконстантной n?
Цитата:
MFC это ужас и мракобесие. Ни тебе ООП, ни тебе компактного и понятного кода.
О_О Я что-то пропустила? Или это теперь модно - ругать MFC. Обоснуйте про отсутствие ООП в нем.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
ACE Valery вне форума Ответить с цитированием
Старый 29.01.2011, 04:17   #10
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Цитата:
А можете мне кинуть цитату из стандарта, которая говорит, что можно сделать int[n] для неконстантной n?
http://msdn.microsoft.com/en-us/library/zb1574zs.aspx
Variable size arrays есть в C99 (но нету в C++98). Если уж очень хочется, могу привести цитату из стандарта. Но вообще, там есть их упоминание в списке отличий от C89. Честно лень открывать стандарт и копипастить. Можете почитать полный список отличий C99 от C89 тут: http://www.informit.com/guides/conte...lus&seqNum=215 — там есть и a[n] в том числе.
Ну а насчёт косяков с C++98, в кои входит, например, проблемы с вложенными шаблонами, вот: http://msdn.microsoft.com/en-us/libr...v=VS.100).aspx (это уже насчёт C++98). Вот вам пример косяка: http://stackoverflow.com/questions/3...-non-pod-types

Честно говоря, я бы gcc под windows использовать бы тоже не стал. Но не потому, что это плохой компилятор, а потому, что под windows ICC шустрее (линкер ld, насколько я знаю, по виндой медленноватую фигню делает, хотя и не сильно медленней icc/msvc++).

Цитата:
О_О Я что-то пропустила? Или это теперь модно - ругать MFC. Обоснуйте про отсутствие ООП в нем.
Дело в первую очередь в проблемах с инкапсуляцией (алоха открытые атрибуты). Да и вообще, MFC мало общего с ООП имеет. Это так, псевдо-ООП, а-ля gtk[mm], только в gtk всё понятней, в отличие от. Короче, нарушает MFC идиомы ООП во все поля. А также, безотносительно ООП: дурацкие оБожеПисецКакаяДлиннаяФигня названия методов, венгерская нотация (матерь божья, как я её ненавижу). Ну и самое противное — полно идиотичных непонятных вещей, тянущихся с бородатых годов из соображений совместимости. Много недокументированной фигни.
Да и вообще, вы сравните реализацию SDI/MDI приложений в MFC и на Qt. На MFC она будет более громоздкой и неудобной.
Вот тут можете почитать: http://qt.osdn.org.ua/mfc-vs-qt.html (это 2007 года статья, а Qt-то подинамичней mfc развивается).

Да и кроссплатформенность это вам не хухры-мухры.
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 29.01.2011 в 04:34.
Obey-Kun вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно написать программу, определиться с выбором языка. Aka-demik Помощь студентам 9 17.02.2010 23:04
Надо определиться tolstij Свободное общение 3 24.01.2010 18:45
Помогите определиться с доменом ERASERROR Свободное общение 8 23.03.2008 16:19
Помогите определиться с средой разработки Руслантус Свободное общение 3 14.03.2008 23:27