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

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


0

0

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

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

Или как?

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

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

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

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

не спорю

Вы прям идеалов каких то рисуете, я таких не видел :)


но кто-то ж пишет качественный код и библиотеки :)

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

> Для большинства софта обычно подходит С. С++

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

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

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

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

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

>в чем тут усложнение? прочитать короткий список «несовместимостей» при переходе к С++?

Усложнение в том, что для нормального программирования на сях надо приучиться ко многим правилам. Возвращаемые значения проверять, ресурсы освобождать и т.д. А при переходе к плюсам это всё можно выкинуть.

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

> Возвращаемые значения проверять, ресурсы освобождать и т.д. А при переходе к плюсам это всё можно выкинуть.

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

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

> С каких пор в плюсах появился сборщик мусора?

в VC есть как расширение к С++, но конечно в самом С++ нет

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

> за видимой простой ООП скрываются многие грабли и ньюансы

что собственно и есть мышление и видение задачи в объектно-ориентированном подходе.

не забываем, что есть Си с классами (что не есть С++ на самом деле).

и против начала с Си, чтобы потом перейти на С++ лично я по собственному опыты: до сих пор printf пишу быстрее, чем cout<<

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

> Не ухватил поинт

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

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

Такая возня с необёрнутыми сишными либами в любом языке. И на плюсах си обёртывать безболезненнее и проще всего.

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

> и против начала с Си, чтобы потом перейти на С++ лично я по собственному опыты: до сих пор printf пишу быстрее, чем cout<<

iostream вообще неудобен и сделан судя по всему просто, чтоб было

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

> Такая возня с необёрнутыми сишными либами в любом языке

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

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

> Один раз обернул и пользуйся не напрягаясь.

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

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

> Вот именно. ООп проще процедруного

а чего тогда не процитировал полностью и не сказал, что это неправда - ООП на самом деле очень простое, без подводных камней и проектировать не надо уметь совсем? ;)

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

> Вы прям идеалов каких то рисуете, я таких не видел :)

но кто-то ж пишет качественный код и библиотеки :)

пишет кто-то, да, но напомню суть

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

пишет то пишет, да только не *СРАЗУ*

как правило это уже версия N, а по Вашим словам и альфы хватает :)

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

>вы так говорите, будто обертки к большим библиотекам пишутся за 5 минут

К большим они часто уже написаны. И если библиотека спроектирована, а не выросла, то да, быстро пишутся.

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

> как правило это уже версия N, а по Вашим словам и альфы хватает :)

грамотное проектирование - половина дела, да, но вторую половину никто не отменял

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

> И если библиотека спроектирована, а не выросла, то да, быстро пишутся.

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

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

> Развеж это большая? :)

для вас 4.5Мб только исходных файлов( .h/.c ) это мало? да вы гигант - наверное пишете 100Мб-е библиотеки?

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

>да - почему для вас написание обертки не требует понимания, как в С обычно работают с ресурсами?

Разумеется требует. Просто когда пишешь обёртку к либе X - и думаешь о заморочках либы X. А когда пишешь программу Y - о заморочках X думать не хочется.

для вас 4.5Мб только исходных файлов( .h/.c ) это мало?

Какая разница, сколько исходных файлов? Важен лишь размер заголовков в -devel-пакете. И с фритайпом я не работал, чтоб не было недоразумений.

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

>любая валидная программа на C является валидной программой на C++

так не любая же

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

> Важен лишь размер заголовков в -devel-пакете.

2.25Мб - мало?

И с фритайпом я не работал, чтоб не было недоразумений.


с этого надо было начинать, точнее вообще не надо было начинать

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

>вы так говорите, будто обертки к большим библиотекам пишутся за 5 минут

конечно не за 5, но если API стабилен (для серьезной бибилотеки это обязательное условие, +ABI в придачу), то в обертке менять ничего не надо

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

> 2.25Мб - мало?

ошибся - их «всего» 1.4Мб, посчитал и .h в ./src

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

> но если API стабилен (для серьезной бибилотеки это обязательное условие, +ABI в придачу), то в обертке менять ничего не надо

почему глупые тролли, которые пишут Qt, так не делают?

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

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

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

>почему глупые тролли, которые пишут Qt, так не делают?

потому, что они писали не обертку для STL, а альтернативную реализацию с б. и ш.

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

> C - да, С с крестами - нет :)

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

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

конечно, сейчас в свете с++0х и прочих бустов многие вещи кажутся костылями, но корни этого сидят в середине 90-х, когда даже не все компиляторы поддерживали RTTI...

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

> разве в ассемблере есть какой-то намек на классы, полиморфизм, шаблоны, готовые к употреблению связанные списки и прочий STL, ...

C99 тоже не представляет из себя набор команд в стиле «классического» ассемблера

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

совместимым, но не ограниченным возможностями С

а в С++ тоже можно асм втыкать, как и в С, низкоуровневая работа не возбраняется

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

> потому, что они писали не обертку для STL, а альтернативную реализацию с б. и ш.

я про png, zlib, freetype и т.п.

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

я не изучал этот код, поэтому не могу ничего сказать

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

>что С++ призван быть расширением к С и быть с ним максимально совместимым( в том числе за счет изменений в С )

Совместимым чтобы работали старые программы, а не писать новые.

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

> Совместимым чтобы работали старые программы, а не писать новые.

нет - для возможности написания эффективного и гибкого кода

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

> тогда зачем их сравнивать? у асма свой уровень,у си - свой, у крестов - свой

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

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

>эти языки так или иначе привязаны к «железу»

и чем же С++ (без ассемблерных вставок) привязан к железу? перекомпиль и радуйся

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

распространенное заблуждение, что С++ это совсем не С,

я так не считаю

он явно говорит, что С++ призван быть расширением к С и быть с ним максимально совместимым

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

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