![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Letchik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
Доброго времени суток!
Как вы уже догадались, топик посвящается языкам С и С++. Однако, я не буду задавать вопрос "какой язык лучше?". Нет. Не буду кота за я"ца тянуть. Оба языка мне нравятся. Процедурное программирование, т.е. чистый С хорош во многом. Особенно он мне понравился в разработке Windows приложений. Код получается весьма обширным, легко запутаться, но программа получается очень быстрой и маленькой по объёму. Нет ничего лишнего, только то, что мне надо. Реализовать такую простоту средствами ООП у меня не получилось. Может руки не с того места растут? Может быть... У меня мало опыта. Но зачем мне огромная куча объектов типа (к примеру) СButton? Каждая кнопка выполняет определённое действие, значит надо создавать множество классов наследников с виртуальными процедурами обработки. То же самое касается других элементов интерфейса. Согласитесь, это лишнее. Однако, есть области программирования, где без ООП не обойтись. В таких случаях писать код на чистом С будет очень затратно и логических ошибок не избежать. Так как же? Совмещать оба языка? К примеру писать интерфейс программы на С, а суть программы писать, по необходимости, на С++. Приемлемо ли это? Или нужно выбрать конкретный язык? Вопрос странный, понимаю, но тем не менее, помогите, пожалуйста, разобраться в этом очень нелёгком вопросе. P.S. я большой противник всяких там MFC, VCL, Qt и тому подобное. Мне кажется, они лишают нас всего кайфа программирования. |
|||
|
||||
VictorTsaregorodtsev |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 274 Регистрация: 28.7.2006 Репутация: 1 Всего: 8 |
Нафига делать кучу наследников? В классе "Кнопка" для каждого возможного там действия заводится поле-указатель на функцию, а потом для каждого экземпляра класса пишутся функции с нужной функциональностью (сорри за тавтологию) и полям-указателям присваиваются адреса нужных функций. Т.е. класс - один, экземпляров класса в программе может быть несколько, и у этих экземпляров могут быть инициализированы разные указатели (отвечающие за разные действия). |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Оно и понятно. Не в обиду.
Первое, о чём стоит заботиться - простой и ясный как день код. Программа не должна быть очень быстрой, она должна быть достаточно быстрой. Достаточно, чтоб не вызывать дискомфорта у конечного пользователя. Множеста классов не надо создавать. Объект = данные + код. Все кнопки - экземпляры одного класса СButton, а код обработчика какого-либо события у них может быть разным. Писать интерфейс на С/С++ - почти всегда использование не по назначению. Это сообщение отредактировал(а) kemiisto - 1.8.2010, 20:42 -------------------- |
|||
|
||||
Abyx |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 601 Регистрация: 3.11.2009 Репутация: 1 Всего: 10 |
||||
|
||||
cutwater |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 1 Всего: 10 |
А что же Вы предлагаете? Я конечно понимаю юношеский максимализм, но когда/если дорастете до проектов крупных и за которые платят деньги, поймете что основная цель - решить поставленную задачу в приемлимые сроки. За кайф от программирования заказчики не платят. Но даже если смотреть на этот вопрос не с точки зрения затрат времени. Я не думаю что разработчику, которому нужно нарисовать интервейс будет в кайф реализовывать мегатонны велосипедов, архитектурный дизайн и прочие возможности, которые предоставляют фреймворки уровня Qt. Поверье есть задачи намного более сложные, чем натыкивание кнопочек на форму, которые решают и на уровне выше графической библиотеки, то есть различные извращения с интерфейсом, оптимизация под конкретные задачи и прочее. Сложный интерфейс сделать ведь тоже не легко. А так же задачи, решаемые на уровне ниже графического интерфейса, в ядре приложения. А переписывать каждый раз избитые велосипеды снова и снова это не кайф, а ненужная трата времени. Плюс тонны ошибок в этих велосипедах, которые так же нужно покрывать и отлаживать. Думаю/надеюсь с опытом это пройдет. Это сообщение отредактировал(а) cutwater - 1.8.2010, 22:09 |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Ты заблуждаешься. Кайф программирования заключается в том, что ты делаешь что-то новое и полезное, познаешь что-то новое. Клепать "окошки" и расставлять кнопочки это вообще работа дизайнера.
|
|||
|
||||
Letchik |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 5.1.2010 Где: UGTB Репутация: нет Всего: нет |
cutwater, согласен, в программировании интерфейса мало чего интересного. Там мало интересных инженерных решений. Это просто рутинная работа, которую, если честно, я всегда не любил. Всегда было желание ускорить этот процесс и перейти к части, где нужно подумать и найти интересное решение проблемы. Пожалуй, я неправильно выразился и проблема с написанием интерфейса заключается в другом. Я провёл небольшой опыт. Написал две абсолютно идентичныео по функциональности программы: обе тупо создают пустое белое окно. Первая программа была написана с помощью MFC, другая на чистом С. Разница меня не порадовала. Окно написанное на MFC занимало в оперативной памяти на 1мб больше чем окно, написанное на С. И это всего лишь одно простое окошко. Что говорить о серьёзном приложении?
Но судя по вашим отзывам, вы за то, чтобы программировать только на С++. Я правильно понимаю? |
|||
|
||||
kemiisto |
|
|||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Боже, нет! Ну не надо С++! 2010 год на дворе, всё, хватит... -------------------- |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Предлагай людям альтернативные языки менее эмоционально. Все-таки, мы в разделе С++.
![]() Letchik, как ты думаешь, почему тот же Qt цветет и пахнет? А я тебе скажу, что 1 мегабайт роли не играет. Так как это константная плата за удобство. При большем расширении функционала объем занимаемой памяти будет не так сильно расти. |
|||
|
||||
Modul |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 238 Регистрация: 17.2.2006 Репутация: нет Всего: нет |
ООП-языки придуманы из-за увеличиваюшихся размеров и сложности программ, а потом и их расширения.
Особого смысла не вижу, если только клиент не требует. Везде работать надо. Желание клиента - закон ! Он платит. Интересен Ваш выбор ? С#, Java или ??? Это сообщение отредактировал(а) Modul - 1.8.2010, 23:32 --------------------
I'll be back ! |
|||
|
||||
kemiisto |
|
||||
![]() Дикий Кот. =^.^= ![]() ![]() ![]() ![]() Награды: 1 Профиль Группа: Участник Клуба Сообщений: 3292 Регистрация: 29.7.2007 Репутация: 2 Всего: 160 |
Не совсем так. Изначально ООП появилось как средство симуляции в Simula-I. В этом языке были activity (классы) и process (объекты). В Simula-67 уже повилось слово class. Ole-Johan Dahl и Kristen Nygaard опирались среди прочего и на работу C. A. R. Hoare , Record Handling. Потом был Alan Kay со товарищи и Smalltalk. ООП - как средство построения графического интерфейса. Но в итоге опыт обобщили до любых сложных задач. В итоге посыла было два:
Alan Kay, The Early History of Smalltalk C# - можно, вместо Java лучше Scala. Ещё можно попробовать динамические ЯП. Тот же Python. Есть наблюдение, что любителям C нравится Python. Smalltalk тоже можно. Да много языков... ![]() -------------------- |
||||
|
|||||
mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 2 Всего: 306 |
||||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Знаешь в чем кайф программирования? Написал программу, сдал, получил деньги и кайфуешь ![]() А сидеть пару месяцев над простейшей программой, только потому, что тебе "не в кайф" учить Qt или .NET, а хочется поработать на WinAPI и сотворить пару сотен велосипедов - это уже патология. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Ну, не надо так категорично. Для новичка это нормально и даже полезно. И кайф есть - сделать самому всякие красивости, и заодно понять как оно работает. Но через некоторое время должно надоесть, или просто станет жаль время тратить (а на кнопочки его много уходит, если приходится нестандартный велосипед изобретать). Если, конечно, не работаешь в команде, которая на таких библиотеках специализируется. -------------------- ... |
|||
|
||||
GrayCardinal |
|
|||
Фигасе ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3039 Регистрация: 9.11.2003 Репутация: 2 Всего: 58 |
Ха. Если программу можно написать на чистом Си - лучше так и сделать. Если придет понимание того, что без классов не обойтись - дописываем нужные классы. То же с ассемблером. Ежели очень хочется - то можно. И почему некоторые пишут на чистом Си++ (всё есть классы) лично я не догоняю.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |