LINUX.ORG.RU

Какую книгу по C++ выбрать?

 ,


5

2

Какую книгу по с++ выбрать

  1. Герберт Шилдт. C++ для начинающих. Шаг за шагом
  2. Стивен Прата. Язык программирования C++. Лекции и упражнения
  3. Предложите свой вариант (учил джаву, с++ смотрел видео ну можно сказать не с нуля учу)

Перемещено hobbit из general

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

Я ж написал, что 3 года – это было формальность, поскольку раньше III курса итоговый экзамен не сдать. Т.е. пара лет – лекции, семинары, а потом только лабы.

Ну тогда это не подходит под «3 года учили Паскалю».

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

Нет. Я теоркиб заканчивал. У нас, если говорить про программирование был курс «ИНформатика» – теоретический, как я выше сказал, про системы счисления, алгоритмы, сложность и еще чего-то по мелочи, был рахорванный курс вычмата, разорван был вполне логично – вначале численное решение простых задач, а на третьем курсе уже сеточные методы и пр., вот к нему была практика с написанием программ, но можно было писать на паскале или на си…, но это опять же не обучение языку, там на качество кода никто не смотрел особо. Было полгода ООП или типа того – это единственный в учебном плане обязательный предмет по программированию. Еще были спец.выч.практики по кафедрам, у нас соотв. мы с матлабом работали, он тогда еще был очень сырой (и пиратский, понятно)… Ну а так были спецкурсы по java и пр. языкам, которые велись по большей части для матобеса, но тогда на них могли записываться все, кто хотел… По CS были всякие семинары/курсы теории сложности вычислений и пр. – весьма интересно, но опять же это далеко от учебного плана, просто тогда было много увлекающихся людей, у них было время и было больше свобод чтобы этому всему учиться…

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

Мат-мех ЛГУ им. Жданова. Нас учили Паскалю 3 года.

Вы, блин, еще бы вспомнили, что в царской России рекруты служили по 25 лет, а во времена СССР на флот призывали на 3 года, а не на 2, как в сухопутные войска.

lavrov.jpg

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

Ибо даже в нашем зажопинском провинциальном универе в те же годы (1990-1995) по специальности 22.04 «ПО ВТ и АС» за первые два курса нам отчитали язык Паскаль (образца Turbo Pascal 3.0 на Pobotron 1715 в первом семестре, образца Turbo Pascal 5.0 на IBM PC во втором), ассемблер x86 и Си (образца Turbo C 2.0 на IBM PC). Причем мы, студенты, более усердно штудировали те же самые книги по этим языкам, что и наши преподаватели, и к концу курсов уже сами объясняли преподам что и как на этих языках делается.

И это еще при том, что я шел по кафедре «вычислительной математики и программирования», где программирование давалось в меньшем объеме, чем параллельной группе, которая так же шла по специальности 22.04.

Ну и, видимо, нас в нашем зажопинске учили учиться гораздо лучше, чем вас в ЛГУ, т.к. с тех пор все языки программирования, которые доводилось изучать и применять, (в той или иной степени) осваивались мной самостоятельно по книгам или описаниям (по типу вот такого для языка D).

И за все 35 лет в программизме, я лишь один раз встретился с книгой по языку программирования, читая которую не возникало понимания как на этом программировать: емнип, это была книжка «Programming Scala» где-то в конце 2000-ых.

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

Что информирование не есть обучение и что ваши предложения, какие с++-привычки надо успеть привить, в общем случае не имеют смысла.

Сказал хз кто (подозреваю, что даже не программист) никогда не обучавший людей C++.

Но я спрошу при случае у людей, которым проводил «курс молодого бойца» по C++, имел ли этот самый курс смысл или нет.

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

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

Судя по тому, что он написал, – да, он по образованию не программист и его образование было очень далеко от этого. Программирование, а точнее сказать «компьютеры», начиная с 70х годов пытались впихивать в учебные планы, потому что надо было, но поскольку почти все не особо понимали как и куда это впихивать, то это то начиналось, то исчезало, и кроме специализированных образовательных программ это не имело эффекта (программистов было мало, а тех, кто мог учить программированию – еще меньше).

Чистые математики в его время имели три основных пути: уйти в науку (безденежье), уехать или стать программистами, впрочем, для выпускников каф.теорвера был еще очень хороший вариант пойти статистику считать для всяких банков и т.п. В 90е и даже в начале нулевых, можно было писать говнокод в стиле Си 80х и быть высокооплачиваемым, способность понимать такой код неплохо коррелировало с матобразованием, поэтому программисты для того времени получались хорошие. Но потом программирование быстро развилось как отрасль, появились стандарты, фреймворки, куча инструментов и старый говнокод уже перестал быть не то что высокооплачиваемым, но даже приемлемым.

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

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

Вы действительно думаете это имеет ключевое значение? Я склонен быть солидарным с вашим оппонентом в его посыле что знание языка в объёме курсов любого ВУЗа автоматически не сделает из вас сколь-нибудь достойного программера. Более того, при всём моём трепетном отношении к преподавательскому составу я довольно скептичен относительно их профессиональных навыков как программистов - в конце концов наверное они на хлеб себе по другому зарабатывали бы будь они успешными и состоявшимися профессионалами этого дела, нет? А как только мы соглашаемся с этим тезисом мы приходим к тому что главное веселье начинается в тот момент когда вас десантируют на реальном производстве, и основные знания добываются именно там.

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

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

Есть те, кто ведут занятия just for fun, есть те, кто подрабатывает программистом в другом месте, есть те, кто делал проекты, а потом ему надоело и он осел в преподавании… Ну и конечно есть есть те, кто нихрена никогда не делал, придумал себе как все должно быть и потом учит этому детей.

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

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

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

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

От самого Мартина Одерского что-ли?

Вот честно, не помню. Я даже не уверен, что она именно так называлась. Объемом была где-то в 200-250 страниц, я осилил под 100, поймал себя на том, что так и не понял, как же на Scala программировать и переключился на чтение PDF-ок с описанием языка.

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

Я прекрасно понимаю ситуацию, т.к. сам учился на математическом факультете, на котором наш поток был всего лишь вторым потоком по специальности 22.04, первый запустили за год до нас, в 1989-ом. До этого максимум что было – это «прикладная математика». А изрядная часть преподавателей открыто заявляла, что программирование – это просто жмакание на кнопки и не заслуживает того, чтобы этому учили в ВУЗе.

Благодаря такой специфике и тому, что нас кроме программирования пичкали разными видами математики и вычислительных методов, довольно быстро убедился в том, что среди хороших математиков очень маленький процент хороших программистов. Большинство же «чистых» математиков/физиков пишут код как курица лапой, пардон май френч.

А вот тот малый процент, которые умеют программировать, вот те прям монстры. Это сейчас без доли иронии.

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

Большинство же «чистых» математиков/физиков пишут код как курица лапой

Угу. Но это потому, что их этому не учили, а сама форма математических доказательств и рассуждений способствует тому, чтобы код писали отвратительно, потому что на доске не будешь писать длинные имена неизвестных и т.п.

Я в какой-то момент (в конце 00х) осознал, что пишу как мудак, в стиле 80х годов. Потратил год на чтение литературы, попытках привести свои проекты в современный вид, и в конце концов стал писать нормально, и с тех пор регулярно смотрю на то, как сейчас пишут. Тот год был тяжелый, я тогда все свои проекты зафакапил, зато потом было уже легко.

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

Вы действительно думаете это имеет ключевое значение?

Да. Одно дело когда людей годами учат применять математический аппарат. Другое дело, когда людей годами учат как строить программы.

Например, нам начали растолковывать чем «хороший» код отличается от «плохого» с первого курса. Например, про понятность, сопровождаемость, про комментарии и пр. После такого чтение какого-нибудь «Чистого кода» или «Совершенного кода» вызывает скуку и не открывает ничего нового.

Я склонен быть солидарным с вашим оппонентом в его посыле что знание языка в объёме курсов любого ВУЗа автоматически не сделает из вас сколь-нибудь достойного программера.

Меня в ВУЗе научили, что ВУЗ не дает знания (как школа), а учит людей учиться. Поэтому в советские и постсоветские времена из ВУЗов выходили не специалисты, а «молодые специалисты», которые потом 2 года на производстве становятся именно что специалистами.

Кроме того, я опять заострю внимание на том, что нельзя ставить знак тождества между «обучением» и «овладением». Курсы по языкам программирования (что в ВУЗе, что прямо на «производстве») – это про «обучение». Т.е. про задание какой-то базы за очень ограниченное время. Но базы, которая позволит затем овладевать языком самостоятельно. И, собственно, фокус в том, какими приемами и что именно в качестве базы давать. А это уже вопрос мастерства и опыта преподавателя. Или автора книги о языке программирования.

Мне повезло, у нас в универе было хорошо с обучением. Может быть потому, что среди преподавателей был большой процент программистов с большим практическим опытом из местного КБ системного программирование (часть из них увел из КБ один из профессоров, остальные пытались в универе подрабатывать когда КБ начало разваливаться после распада СССР).

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

Но это потому, что их этому не учили

Не, мне кажется, что это потому, что у физиков/математиков мозги по другому устроены и натренированы на другое.

ИМХО, программирование (до сих пор по крайней мере) ближе к литературе. Т.е. к письменному описанию того, что должно быть сделано.

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

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

Например, нам начали растолковывать чем «хороший» код отличается от «плохого» с первого курса. Например, про понятность, сопровождаемость, про комментарии и пр

Для не программисткой специальности в начале 90х это очень повезло, вот прям ОЧЕНЬ.

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

Для не программисткой специальности в начале 90х это очень повезло, вот прям ОЧЕНЬ.

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

А так-то да, с преподавателями и вообще свободной атмосферой соревновательного творчества повезло очень.

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

Алгоритмы… Численные схемы, оптимизационные задачи, статистические расчеты, системное программирование (то, которое ниже уровня операционки, т.е. микроархитектура и isa) это все что было программированием до 90х, это математика по большей части.

Это потом уже появилось массовое написание софта и приложений, потом веб, потом смартфоны – вот это все резко изменило то, что вкладывалось в понятие «программирование». И вот это действительно в большинстве своем, имхо, ближе к литературе, т.е. к складному выражению мысли (за исключением очень маленькой части, где всплывают алгоритмы и системное взаимодействие).

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

Большинство же «чистых» математиков/физиков пишут код как курица лапой, пардон май френч.

Мне кажется имеет место быть очень большой перекос приоритетов и ценностей. Программа прежде всего должна быть полезной и востребованной, безотносительно того насколько она красива и вылизана (или наоборот - корява до безобразия) внутри. И как раз умение пересечь этот мост (от бизнес задачи до конкретного воплощения) - это то что ценится больше всего. И здесь начинает ключевую роль играть как раз экспертиза в предметной области, «голое» программирование ограничит вас потолком условного кодера, коих миллионы.

А вот тот малый процент, которые умеют программировать, вот те прям монстры.

Я нисколько не удивлён. Как по мне - так очень ожидаемо.

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

это все что было программированием до 90х, это математика по большей части

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

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

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

Ну вот честно ХЗ. Мне пока хватает простого кодерства без глубокой экспертизы в предметных областях, для которых приходилось писать код.

Может быть потому, что люди с глубокой экспертизой рано или поздно оказываются в ситуации «а почему оно не работает?». Причем лучше бы рано, чем поздно :)))

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

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

Ну работа Дейкстры про вред goto была написана в конце 60х. Все это было, но до массовости до best practice было еще очень далеко, это требовалось в очень небольшом количестве компаний.

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

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

Качество кода определяет максимальный размер (и сложность) программы, которую можно написать. У меня был классный пример, был студент, который говорил

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

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

soomrack ★★★★★
()
Последнее исправление: soomrack (всего исправлений: 1)
Ответ на: комментарий от soomrack

Не совсем в тему, но не удержусь. В те давние советские времена когда я учился, был у нас классный препод по вышке. Он всегда говорил что формулы не нужно учить, только дебилы так делают. Вы должны их находить по справочнику и уметь правильно применять.

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

У меня был классный пример, был студент, который говорил…

Ах, молодость молодость… Сам не без греха и попадал в эту ловушку - 20+ лет назад уже имея примерно 10ти летний опыт промышленной разработки за плечами я думал что повидал в этой жизни всё. Бог ты мой, как же я заблуждался - самое интересное только начиналось…

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

Называлась «программное обеспечение вычислительной техники и автоматизированных систем» со специальностью «инженер-программист» в дипломе.

Это всё условности. У меня вот в дипломе написано «прикладная математика и физика», и это при том что базовая кафедра у нас была ИТМиВТ им г-на Лебедева. Да да, та самая где Эльбрусы создавались. А вторая половина группы была приписана к Спарк-центру Бабаяна (он на тот момент уже отделился). И, кстати, физики и математики у нас было несоизмеримо больше чем программирования, чему оглядываясь назад я безумно рад :)

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

Качество кода определяет максимальный размер (и сложность) программы, которую можно написать.

Кто купит правильно написанную, но совершенно бесполезную программу? И математики, и программисты это лохи, которые никогда ничего полезного для общества создать не смогут. Скатятся со своими алгоритмами до спекуляций «фантиками» и программами для создания программ.

Для того, чтобы создать что-либо полезное всему обществу, необходимо понимать взаимодействие сущностей осязаемого мира, а не только владеть выдуманным языком математических закорючек и чисел. Разве смог бы физик Илон Маск запустить группировку спутников, будучи программистом или математиком? - Никогда! Настоящие дела двигают люди из осязаемого, физического мира.

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

это потому, что у физиков/математиков мозги по другому устроены и натренированы на другое.

Это потому что прога физика/математика обычно запускается 1 раз, что-то считает, а потом отправляется в «Приложение 158» к статье.

Для физика или математика в их прогах идентификаторы «v» или «V», «e», «A», «U» и т.д. совершенно однозначны. И даже вместо «ksi» они напишут «K».

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

Раньше (мое мнение) учили программировать а не кодировать. Тем ученикам был плевать на ЯП.

Мой друг, ровесник (по моему мнению хороший программер) выбрал написать диплом по Модула-2 и забабахал крутую многопоточную прогу.

mx__ ★★★★★
()
Последнее исправление: mx__ (всего исправлений: 1)