Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C && C++ 
:(
    Опции темы
Letchik
Дата 1.8.2010, 20:29 (ссылка)    | (голосов:8) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 5.1.2010
Где: UGTB

Репутация: нет
Всего: нет



Доброго времени суток!
Как вы уже догадались, топик посвящается языкам С и С++. Однако, я не буду задавать вопрос "какой язык лучше?". Нет. Не буду кота за я"ца тянуть. Оба языка мне нравятся.
Процедурное программирование, т.е. чистый С хорош во многом. Особенно он мне понравился в разработке Windows приложений. Код получается весьма обширным, легко запутаться, но программа получается очень быстрой и маленькой по объёму. Нет ничего лишнего, только то, что мне надо. Реализовать такую простоту средствами ООП у меня не получилось. Может руки не с того места растут? Может быть... У меня мало опыта. Но зачем мне огромная куча объектов типа (к примеру) СButton? Каждая кнопка выполняет определённое действие, значит надо создавать множество классов наследников с виртуальными процедурами обработки. То же самое касается других элементов интерфейса. Согласитесь, это лишнее.
Однако, есть области программирования, где без ООП не обойтись. В таких случаях писать код на чистом С будет очень затратно и логических ошибок не избежать. 
Так как же? Совмещать оба языка? К примеру писать интерфейс программы на С, а суть программы писать, по необходимости, на С++. Приемлемо ли это? Или нужно выбрать конкретный язык?
Вопрос странный, понимаю, но тем не менее, помогите, пожалуйста, разобраться в этом очень нелёгком вопросе.

P.S. я большой противник всяких там MFC, VCL, Qt и тому подобное. Мне кажется, они лишают нас всего кайфа программирования.
PM MAIL Skype   Вверх
VictorTsaregorodtsev
Дата 1.8.2010, 20:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 28.7.2006

Репутация: 1
Всего: 8



Цитата(Letchik @  1.8.2010,  20:29 Найти цитируемый пост)
Каждая кнопка выполняет определённое действие, значит надо создавать множество классов наследников с виртуальными процедурами обработки. 

Нафига делать кучу наследников? В классе "Кнопка" для каждого возможного там действия заводится поле-указатель на функцию, а потом для каждого экземпляра класса пишутся функции с нужной функциональностью (сорри за тавтологию) и полям-указателям присваиваются адреса нужных функций.
Т.е. класс - один, экземпляров класса в программе может быть несколько, и у этих экземпляров могут быть инициализированы разные указатели (отвечающие за разные действия).
PM MAIL WWW   Вверх
kemiisto
Дата 1.8.2010, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
У меня мало опыта.

Оно и понятно. Не в обиду.

Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
Код получается весьма обширным, легко запутаться, но программа получается очень быстрой и маленькой по объёму.

Первое, о чём стоит заботиться - простой и ясный как день код. Программа не должна быть очень быстрой, она должна быть достаточно быстрой. Достаточно, чтоб не вызывать дискомфорта у конечного пользователя.

Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
Но зачем мне огромная куча объектов типа (к примеру) СButton? Каждая кнопка выполняет определённое действие, значит надо создавать множество классов наследников с виртуальными процедурами обработки.

Множеста классов не надо создавать. Объект = данные + код. Все кнопки - экземпляры одного класса СButton, а код обработчика какого-либо события у них может быть разным.

Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
Так как же? Совмещать оба языка? К примеру писать интерфейс программы на С, а суть программы писать, по необходимости, на С++. Приемлемо ли это? Или нужно выбрать конкретный язык?

Писать интерфейс на С/С++ - почти всегда использование не по назначению.


Это сообщение отредактировал(а) kemiisto - 1.8.2010, 20:42


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Abyx
Дата 1.8.2010, 20:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 601
Регистрация: 3.11.2009

Репутация: 1
Всего: 10



Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
К примеру писать интерфейс программы на С, а суть программы писать, по необходимости, на С++. Приемлемо ли это?

только в случае если интерфейс будет вызывать код на другом языке
PM MAIL   Вверх
cutwater
Дата 1.8.2010, 22:09 (ссылка) |    (голосов:11) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 592
Регистрация: 24.6.2008

Репутация: 1
Всего: 10



Цитата(Letchik @  1.8.2010,  19:29 Найти цитируемый пост)

P.S. я большой противник всяких там MFC, VCL, Qt и тому подобное. Мне кажется, они лишают нас всего кайфа программирования. 


А что же Вы предлагаете? Я конечно понимаю юношеский максимализм, но когда/если дорастете до проектов крупных и за которые платят деньги, поймете что основная цель - решить поставленную задачу в приемлимые сроки. За кайф от программирования заказчики не платят.
Но даже если смотреть на этот вопрос не с точки зрения затрат времени. Я не думаю что разработчику, которому нужно нарисовать интервейс будет в кайф реализовывать мегатонны велосипедов, архитектурный дизайн и прочие возможности, которые предоставляют фреймворки уровня Qt. Поверье есть задачи намного более сложные, чем натыкивание кнопочек на форму, которые решают и на уровне выше графической библиотеки, то есть различные извращения с интерфейсом, оптимизация под конкретные задачи и прочее. Сложный интерфейс сделать ведь тоже не легко. А так же задачи, решаемые на уровне ниже графического интерфейса, в ядре приложения. А переписывать каждый раз избитые велосипеды снова и снова это не кайф, а ненужная трата времени. Плюс тонны ошибок в этих велосипедах, которые так же нужно покрывать и отлаживать.
Думаю/надеюсь с опытом это пройдет.

Это сообщение отредактировал(а) cutwater - 1.8.2010, 22:09


--------------------
user posted image
PM MAIL   Вверх
bsa
Дата 1.8.2010, 22:28 (ссылка) |    (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(Letchik @  1.8.2010,  21:29 Найти цитируемый пост)
Мне кажется, они лишают нас всего кайфа программирования.
Ты заблуждаешься. Кайф программирования заключается в том, что ты делаешь что-то новое и полезное, познаешь что-то новое. Клепать "окошки" и расставлять кнопочки это вообще работа дизайнера.
PM   Вверх
Letchik
Дата 1.8.2010, 22:48 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 50
Регистрация: 5.1.2010
Где: UGTB

Репутация: нет
Всего: нет



cutwater, согласен, в программировании интерфейса мало чего интересного. Там мало интересных инженерных решений. Это просто рутинная работа, которую, если честно, я всегда не любил. Всегда было желание ускорить этот процесс и перейти к части, где нужно подумать и найти интересное решение проблемы. Пожалуй, я неправильно выразился и проблема с написанием интерфейса заключается в другом. Я провёл небольшой опыт. Написал две абсолютно идентичныео по функциональности программы: обе тупо создают пустое белое окно. Первая программа была написана с помощью MFC, другая на чистом С. Разница меня не порадовала. Окно написанное на MFC занимало в оперативной памяти на 1мб больше чем окно, написанное на С. И это всего лишь одно простое окошко. Что говорить о серьёзном приложении?
Но судя по вашим отзывам, вы за то, чтобы программировать только на С++. Я правильно понимаю?
PM MAIL Skype   Вверх
kemiisto
Дата 1.8.2010, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Letchik @  1.8.2010,  23:48 Найти цитируемый пост)
Первая программа была написана с помощью MFC, другая на чистом С. Разница меня не порадовала. Окно написанное на MFC занимало в оперативной памяти на 1мб больше чем окно, написанное на С. И это всего лишь одно простое окошко. Что говорить о серьёзном приложении?
  • Серьёзное приложение с графическим интерфейсом на чистом С можно не дописать и до конца света. smile 
  • Не надо сравнивать пустые окна. Нужно сравнивать готовые приложения. И не только размер в оперативной памяти, но и трудозатраты.

Цитата(Letchik @  1.8.2010,  23:48 Найти цитируемый пост)
 судя по вашим отзывам, вы за то, чтобы программировать только на С++. Я правильно понимаю?

Боже, нет! Ну не надо С++! 2010 год на дворе, всё, хватит...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
bsa
Дата 1.8.2010, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(kemiisto @  1.8.2010,  23:55 Найти цитируемый пост)
Боже, нет! Ну не надо С++! 2010 год на дворе, всё, хватит... 
Предлагай людям альтернативные языки менее эмоционально. Все-таки, мы в разделе С++.  smile 

Letchik, как ты думаешь, почему тот же Qt цветет и пахнет? А я тебе скажу, что 1 мегабайт роли не играет. Так как это константная плата за удобство. При большем расширении функционала объем занимаемой памяти будет не так сильно расти.
PM   Вверх
Modul
Дата 1.8.2010, 23:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 238
Регистрация: 17.2.2006

Репутация: нет
Всего: нет



ООП-языки придуманы из-за увеличиваюшихся размеров и сложности программ, а потом и их расширения.

Цитата

Ну не надо С++! 2010 год на дворе, всё, хватит...


Особого смысла не вижу, если только клиент не требует. Везде работать надо.
Желание клиента - закон ! Он платит.

Интересен Ваш выбор ?
С#, Java или ???

Это сообщение отредактировал(а) Modul - 1.8.2010, 23:32
--------------------
I'll be back !
PM MAIL   Вверх
kemiisto
Дата 2.8.2010, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 2
Всего: 160



Цитата(Modul @  2.8.2010,  00:29 Найти цитируемый пост)
ООП-языки придуманы из-за увеличиваюшихся размеров и сложности программ, а потом и их расширения.

Не совсем так. Изначально ООП появилось как средство симуляции в Simula-I. В этом языке были activity (классы) и process (объекты). В Simula-67 уже повилось слово class. Ole-Johan Dahl и Kristen Nygaard опирались среди прочего и на работу C. A. R. Hoare    
Record Handling.

Потом был Alan Kay со товарищи и Smalltalk. ООП - как средство построения графического интерфейса. Но в итоге опыт обобщили до любых сложных задач.

В итоге посыла было два:
Цитата
Though OOP came from many motivations, two were central. The large scale one was to find a better module scheme for complex systems involving hiding of details, and the small scale one was to find a more flexible version of assignment, and then to try to eliminate it altogether.

Alan Kay, The Early History of Smalltalk

Цитата(Modul @  2.8.2010,  00:29 Найти цитируемый пост)
Интересен Ваш выбор ?
С#, Java или ???

C# - можно, вместо Java лучше Scala. Ещё можно попробовать динамические ЯП. Тот же Python. Есть наблюдение, что любителям C нравится Python. Smalltalk тоже можно. Да много языков... smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mrbrooks
Дата 2.8.2010, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 2
Всего: 306



Цитата(kemiisto @  2.8.2010,  09:37 Найти цитируемый пост)
C# - можно, вместо Java лучше Scala. Ещё можно попробовать динамические ЯП. Тот же Python. Есть наблюдение, что любителям C нравится Python. Smalltalk тоже можно. Да много языков... 

ооо. прогресс. раньше помнится был только Оберон  smile 
PM MAIL   Вверх
azesmcar
Дата 2.8.2010, 08:43 (ссылка) |    (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Letchik @  1.8.2010,  20:29 Найти цитируемый пост)
P.S. я большой противник всяких там MFC, VCL, Qt и тому подобное. Мне кажется, они лишают нас всего кайфа программирования. 

Знаешь в чем кайф программирования? Написал программу, сдал, получил деньги и кайфуешь smile 
А сидеть пару месяцев над простейшей программой, только потому, что тебе "не в кайф" учить Qt или .NET, а хочется поработать на WinAPI и сотворить пару сотен велосипедов - это уже патология. 
PM   Вверх
Earnest
Дата 2.8.2010, 11:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 53
Всего: 183



Цитата(azesmcar @  2.8.2010,  09:43 Найти цитируемый пост)
 это уже патология.  

Ну, не надо так категорично. Для новичка это нормально и даже полезно. И кайф есть - сделать самому всякие красивости, и заодно понять как оно работает. 
Но через некоторое время должно надоесть, или просто станет жаль время тратить (а на кнопочки его много уходит, если приходится нестандартный велосипед изобретать). 
Если, конечно, не работаешь в команде, которая на таких библиотеках специализируется.


--------------------
...
PM   Вверх
GrayCardinal
Дата 2.8.2010, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Фигасе
****


Профиль
Группа: Завсегдатай
Сообщений: 3039
Регистрация: 9.11.2003

Репутация: 2
Всего: 58



Ха. Если программу можно написать на чистом Си - лучше так и сделать. Если придет понимание того, что без классов не обойтись - дописываем нужные классы. То же с ассемблером. Ежели очень хочется - то можно. И почему некоторые пишут на чистом Си++ (всё есть классы) лично я не догоняю.


--------------------
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1175 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.