LINUX.ORG.RU
решено ФорумTalks

[програмирование][учить]C++ + Qt.


0

0

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

Вопрос - как к этому лучше всего подступиться?
Кое что в программировании в принципе я понимаю (понятия функции, цикла и тому подобного, необходимости понятного кода ну и т.п.). Однако знаний ни в C ни в C++ нет никаких.
Начать с C++ в целом, а потом, после того, как разберусь как оно вообще работает, смотреть уже документацию/книги по Qt?

Или как?

Посоветуйте.

P.S. выбрать другой язык не советуйте - что изучать для себя я уже решил, теперь надо понять как это изучать.

Ответ на: комментарий от lester

> для примера RTTI практически отсутствует

RTTI или исследования самого класса в RT?

namezys ★★★★
()
Ответ на: комментарий от namezys

> o_O вот это новости... я что-то пропустил???

Это лично обо мне? У меня в руках учебник по MFC появился раньше, чем по С++

не, не...

В школе я начала

я начала

начала

OMG!!!

shty ★★★★★
()
Ответ на: комментарий от legolegs

Т.е. вы предлагаете использовать вместо этого D? Сколько кадров его знают? Или отказаться от высокоуровневого программирования совсем?

Legioner ★★★★★
()
Ответ на: комментарий от lester

А что плохого в бусте и километровых шаблонах?

KISS

и теперь поясните применимость этого принципа для разных парадигм программирования

shty ★★★★★
()
Ответ на: комментарий от lester

А что плохого в бусте и километровых шаблонах?

KISS

А что там сложного? Сложно это когда всякие генераторы кода используются.

Legioner ★★★★★
()
Ответ на: комментарий от legolegs

> То же RAII, более строгая типизация, конструкторы с деструкторами сильно меняют подход, позволяя больше рутинной работы спихнуть на компилятор

за этим скрывается вполне несложная реализация, и на С макросами такое уже реализовано

Мои программы на c++ на си не переводятся, а если переводятся, то поддержке не подлежат.


это понятно - обратной совместимости нет

lester ★★★★
()
Ответ на: комментарий от lester

> за этим скрывается вполне несложная реализация, и на С макросами такое уже реализовано

НЕ сложный? вы давно видели GTK на С?

А как бедный компилятор это должен оптимизировать. Статическим анализом?

namezys ★★★★
()
Ответ на: комментарий от namezys

классическая опечатка

эм, чёт многовато опечаток на такой коротенький текст :)

В школе я начала со второго...

Потом, в 11 классе я начала идти первым путем...

shty ★★★★★
()
Ответ на: комментарий от lester

за этим скрывается вполне несложная реализация, и на С макросами такое уже реализовано

Как обрабатывать ошибки в С? Лучший способ, который я видел - проверять return value каждого вызова, и в случае ошибки делать goto вниз функции, где в обратном порядке освобождаются ресурсы. Исключения+деструкторы решают эту проблему на порядок красивее и понятнее.

Legioner ★★★★★
()
Ответ на: комментарий от legolegs

> Ниасиляторы ниасиливают. Причём это реальная проблема, и отдел кадров её решить не в силах, как правило.

а зачем их осиливать? чесать ЧСВ? практической пользы - 0

lester ★★★★
()
Ответ на: комментарий от Legioner

> Исключения+деструкторы решают эту проблему на порядок красивее и понятнее.

исключения в С++ тормозные

lester ★★★★
()
Ответ на: комментарий от namezys

> НЕ сложный? вы давно видели GTK на С?

нет - а что?

А как бедный компилятор это должен оптимизировать. Статическим анализом?


а в чем проблема собс-но?

lester ★★★★
()
Ответ на: комментарий от lester

Они тормозные, только когда исключение происходит. Когда всё идёт нормально, они работают быстро. А вот проверки return value тормозят всегда.

Legioner ★★★★★
()

Отметил как решенную.
Запасся книжками.
Будем идти правильным путём в изучении, главное - задаться целью написать что-то реальное.


P.S. лор таки торт, как обычно.

CyberTribe ★★
() автор топика
Ответ на: комментарий от shty

>> А что плохого в бусте и километровых шаблонах?

и теперь поясните применимость этого принципа для разных парадигм программирования


по вашей парадигме надо все запутывать и писать больше кода?

lester ★★★★
()
Ответ на: комментарий от lester

а зачем их осиливать? чесать ЧСВ? практической пользы - 0

Хоть такие вещи и сложны (в с++00х будет лучше)

node< void, typename remove_deferred<typename boost::func_detail<F>::type>::type >
но это позволило генерить компилятору ассинхронный код по сигнатуре функций, а программисту указывать только функции, не думаю - синхронная она или нет

namezys ★★★★
()
Ответ на: комментарий от lester

> исключения в С++ тормозные

Исключения везде тормозные. Но try блоки очень дешовые или бесплатные

namezys ★★★★
()
Ответ на: комментарий от Legioner

>Т.е. вы предлагаете использовать вместо этого D? Сколько кадров его знают? Или отказаться от высокоуровневого программирования совсем?

Я? Нет. Линус упаси. У ди ещё молоко Александреску на губах не обсохло, ну его. Я лишь согласился, что проблема есть. Решается она по-разному. Кто-то тратит больше денег на зарплаты и кадры всё-таки находятся, кто-то отказывается от шаблонов и других сложных фич и теряет в надёжности и скорости разработки. Выкручиваются.

legolegs ★★★★★
()
Ответ на: комментарий от lester

> нет - а что?

Посмотрите. Там, кстати нет не какой проверки типов - все на совести программиста. А это даже не стрелять себе по ногам - это курить стоя в море напалма

а в чем проблема собс-но?

Во всем. Или тут у нас на уровне статического анализа раскрываются десятки функций, или там ничего

namezys ★★★★
()
Ответ на: комментарий от lester

> т.е. программы на С тормозные by-design? вот так новость :)

В Си ИГНОРИРОВАНИЕ ошибок не бесплатна (так же, как и необходимость проверить, что все произошло без ошибок)

namezys ★★★★
()
Ответ на: комментарий от Legioner

> Ну если эмулировать исключения всякими longjmp-ами, то нет.

Эмуляция longjmp не бесплатна. Да и сложна, ко всему прочему

namezys ★★★★
()

я убегаю - отвечу всем как вернусь

lester ★★★★
()
Ответ на: комментарий от lester

>а зачем их осиливать? чесать ЧСВ? практической пользы - 0

Давайте сразу определимся, «шаблоны не нужны» или «километровые шаблоны не нужны»? Первое - это самое настоящее 4.2, второе вызывает вопрос «нужны-ли 999и-метровые шаблоны» и вообще где та соломинка, что переломит мозг верблюда?

legolegs ★★★★★
()
Ответ на: комментарий от lester

А что плохого в бусте и километровых шаблонах?

и теперь поясните применимость этого принципа для разных парадигм программирования

по вашей парадигме надо все запутывать и писать больше кода?

1) путаются слабые рассудком и неопытные, кода меньше получается

2) таки вопрос был в другом: как это Вы так ловко распространили принцип KISS на два языка сразу? может тогда сравним, к примеру, си и ассемблер или похапе и лисп?

shty ★★★★★
()
Ответ на: комментарий от Legioner

>Они тормозные, только когда исключение происходит. Когда всё идёт нормально, они работают быстро

Вообще-то всё не так радужно. Есть кое-какие накладные расходы на вызов функций, афайк. И код раздувается.

legolegs ★★★★★
()
Ответ на: комментарий от CyberTribe

>P.S. лор таки торт, как обычно.

А «серьёзный вопрос» не ты-ли задавал?

legolegs ★★★★★
()
Ответ на: комментарий от gunja

>зачем человеку советуете плохое? совершенно разные 2 концепции. начнёт с изучения С, так и застрянет в таком подходе к программированию. ++, только ++

Программист, который не сможет осилить ООП после изучения процедурного программирования, не нужен

Dudraug ★★★★★
()
Ответ на: комментарий от Dudraug

зачем человеку советуете плохое? совершенно разные 2 концепции. начнёт с изучения С, так и застрянет в таком подходе к программированию. ++, только ++

Программист, который не сможет осилить ООП после изучения процедурного программирования, не нужен

ога, сейчас из соседнего треда подползут лисперы и убедительно тебе докажут что тот кто практикует разделение кода и данных - лох позорный

shty ★★★★★
()
Ответ на: комментарий от shty

> путаются слабые рассудком и неопытные, кода меньше получается

есть такое понятие как читабельность и простота использования - и оно не зависит от того, кто пользуется кодом; и кстати простота( в реализации ) позволяет добиться лучшей производительности, для примера приведу то, чем занимался на днях: подбирал парсер/генератор XML - остановился на rapidXML на С++, по причинам:

1. он очень мало занимает - пара .hpp( достаточно сделать #include )
2. он работает очень быстро - в десятки раз быстрее «сложных аналогов» и лишь в 2-3 раза медленней strlen
3. он полностью реализует поставленные задачи и позволяет работать с различными типами нод и атрибутами
4. крайне удобный для использования - даже документацию читать не надо, и код с его использованием также очень прост, читабелен и краток

таким пользоваться очень приятно, как еще один аналог - FLTK, также на С++, также прост, быстр, легок и минимален, но к сожалению такие библиотеки больше исключение - а большинство библиотек на С++ весят мегабайты, тормозят на современном железе и гораздо более бажные, зато со свистелками, бустами, пяти-колесными велосипедами и метровыми листингами, которые сам автор через полгода не разберет

2) таки вопрос был в другом: как это Вы так ловко распространили принцип KISS на два языка сразу?


этот принцип работает везде, если-что

lester ★★★★
()
Ответ на: комментарий от legolegs

> Давайте сразу определимся, «шаблоны не нужны» или «километровые шаблоны не нужны»?

«километровые шаблоны не нужны», а «обычные» я и сам регулярно использую

и вообще где та соломинка, что переломит мозг верблюда?


точной границы ес-но не существует - но шаблоны ради шаблонов( как и фп только ради фп, например ) не нужны

lester ★★★★
()
Ответ на: комментарий от shty

>ога, сейчас из соседнего треда подползут лисперы и убедительно тебе докажут что тот кто практикует разделение кода и данных - лох позорный

Лисп тоже осилить ради общего развития стоит. Если человек не может осилить несколько парадигм и не может быстро выучить язык, то он кодер, а не программист.

Dudraug ★★★★★
()
Ответ на: комментарий от lester

> путаются слабые рассудком и неопытные, кода меньше получается

есть такое понятие как читабельность и простота использования - и оно не зависит от того, кто пользуется кодом;

ой ле? ещё как зависит, дайте зелёному студенту поразбирать самый правильный и самый логичный, но достаточно серьёзный код (например stl или cgal) - он на Вас глаза вылупит, знаете какие? :)

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

//fixed

shty ★★★★★
()
Ответ на: комментарий от shty

> ой ле? ещё как зависит, дайте зелёному студенту поразбирать самый правильный и самый логичный, но достаточно серьёзный код (например stl или cgal) - он на Вас глаза вылупит, знаете какие? :)

и? это противоречит тому, что я написал?

большинство библиотек, неважно на каком языке


угу - вот только С++, как я уже писал, по сути ассемблер, и непонятно желание авторов этих библиотек писать( и писать медленный и раздутый код ) именно на С++ - есть же Java в конце концов, лиспы и т.п.

lester ★★★★
()
Ответ на: комментарий от Dudraug

ога, сейчас из соседнего треда подползут лисперы и убедительно тебе докажут что тот кто практикует разделение кода и данных - лох позорный

Лисп тоже осилить ради общего развития стоит. Если человек не может осилить несколько парадигм и не может быстро выучить язык, то он кодер, а не программист.

да много что стоит освоить, только времени на работу не останется если всем сразу заниматься

выучить язык? это изучение синтаксиса щитоле? если так, то это не более чем предмет фапа для языкодрочеров, сам по себе синтаксис имеет ценность стремящуюся к нулю

язык надо уметь применять, а это быстро у Вас сделать не получится, я гарантирую это, для того чтобы начать немного понимать о чём речь идёт надо написать 2-3 проекта, причём куда потолще чем Hello, world, а потом ещё и посаппортить их

shty ★★★★★
()
Ответ на: комментарий от lester

>>есть такое понятие как читабельность и простота использования - и оно не зависит от того, кто пользуется кодом;

ой ле? ещё как зависит, дайте зелёному студенту поразбирать самый правильный и самый логичный, но достаточно серьёзный код (например stl или cgal) - он на Вас глаза вылупит, знаете какие? :)

и? это противоречит тому, что я написал?

на мой взгляд - да, ибо нормальный программист имеющий сравнительно небольшой опыт уже спокойно читает те же исходники и может при помощи своего опыта оценить и прямые и кривые места кода

вот только С++, как я уже писал, по сути ассемблер, и непонятно желание авторов этих библиотек писать( и писать медленный и раздутый код ) именно на С++ - есть же Java в конце концов, лиспы

и на си то же самое пишут, с поправкой на ветер, конечно :)

ну вопрос почему люди определённых категорий выбирают с++? это тот же вопрос почему иные дяди покупают себе огромный внедорожник, хотя единственное «бездорожье» которое они видели - это асфальт на мкад'е или почему молодые люди которые и так то ездить не умеют берут себе спортивную машину

круто потому что :)

shty ★★★★★
()
Ответ на: комментарий от shty

> на мой взгляд - да, ибо нормальный программист имеющий сравнительно небольшой опыт уже спокойно читает те же исходники

а хороший программист - это «ленивый» программист, который сразу пишет так, чтоб было просто, быстро, расширяемо и удобно

круто потому что :)


согласен, поэтому и агитирую всех за лисп :)

lester ★★★★
()
Ответ на: комментарий от Dudraug

> Программист, который не сможет осилить ООП после изучения процедурного программирования, не нужен

Не усложняйте человеку жизнь. Он только учится

namezys ★★★★
()
Ответ на: комментарий от namezys

> для вас нормальным языком считается только динамический

совсем наоборот - я предпочитаю С и С++, а вообще нет нормальных и ненормальных языков, есть те, что подходят под задачу, и те, что не подходят

lester ★★★★
()
Ответ на: комментарий от lester

на мой взгляд - да, ибо нормальный программист имеющий сравнительно небольшой опыт уже спокойно читает те же исходники

а хороший программист - это «ленивый» программист, который сразу пишет так, чтоб было просто, быстро, расширяемо и удобно

1) «ленивость» - это необходимо, но не достаточно и «ленивость» «ленивости» - рознь, это тоже важно помнить,да %)

2) Вы прям идеалов каких то рисуете, я таких не видел :) наверное libastral.so пока его никто как надо собирать не научился

shty ★★★★★
()
Ответ на: комментарий от namezys

> Не усложняйте человеку жизнь. Он только учится

как я уже писал - базовая часть С++ это и есть на 98%( условно ) тот же С, в чем тут усложнение? прочитать короткий список «несовместимостей» при переходе к С++?

lester ★★★★
()
Ответ на: комментарий от lester

> вообще нет нормальных и ненормальных языков, есть те, что подходят под задачу, и те, что не подходят

Для большинства софта обычно подходит С. С++, Pascal - ибо более или менее нативно работает под виндой

namezys ★★★★
()
Ответ на: комментарий от lester

> как я уже писал - базовая часть С++ это и есть на 98%( условно ) тот же С, в чем тут усложнение?

Я имел в виду, что если он хочет учить ООП, пусть не учит процедурный подход - он сможет его понять легко после ООП. Наоборот сложнее

namezys ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.