Литература для последовательного изучения программирования?
Хочу изучить программирование как базис, чтобы потом без проблем перемещаться между различными языками и технологиями. Подскажите учебники, желательно одного курса, чтобы изучить "от А до Я". Важно, чтобы сама информация была последовательная, без резких рывков в повествовании, поэтому единый курс был бы наиболее предпочтительным.
Сам в программировании ноль. Искал в интернете, там, в основном, рейтинги. Мне важен именно "курс", подобно университетским программам.
Вряд ли такое есть в природе.
Переключаться между языками в рамках одной парадигмы программирования можно достаточно легко, т.к. принципы в ЯПах заложены одни и те же или похожие. Но переключиться на язык из другой парадигмы будет сложно.
Например переключиться C++ -> python - вообще не проблема - через неделю плотного погружения будете уже "шпрехать" на питоне вполне сносно. Обратно сложнее и дольше, т.к. С++ сложнее, но в целом то же не большая проблема - сильно ломать голову не придется, просто будет много специфических нюансов.
А вот python/С++ -> SQL или какой-нибудь Haskel - уже придется напрягаться и фактически учиться программировать заново в рамках новой парадигмы.
Для облегчения переключения в рамках одной парадигмы есть смысл учить сразу сложный язык, например С++ для императивной парадигмы - большинство других ЯП из этой парадигмы будут проще.
Но учить сложный язык с нуля - это долго и может быть менее продуктивно, чем, допустим, начать с питона, а затем когда уже освоите немного питон и алгоритмизацию переключиться на С++.
Мне важен именно "курс", подобно университетским программам.
Что дверь в универ для вас закрыта уже? Кстати, можно погуглить и университетские программы. Но университет то же не даст гарантии "без проблем перемещаться между различными языками и технологиями".
Кнут не про программирование вообще и не про ЯПы, а про алгоритмы. Там много интересного. Но 4 внушительных тома напичканных математикой... на полке выглядят красиво :)
По алгоритмам есть много других книг с разной степенью требовательности к читателю.
Если совсем ноль, то можно взять что-то легкое, типа "Грокаем алгоритмы", потом, если понадобиться, добавить в коллекцию Кормена - то же весьма внушительный том, но он 1 и заточен больше на программистов, а не математиков, как Кнут.
Алгоритмы вещь нужная для настраивания мозга на правильный лад и в жизни, порой, бывают полезны, но далеко не все и не каждому. Но это лишь часть от того что требуется. На универсальный курс по программированию не тянет.
res2001, и тем не менее это ближе всего к тому, что запрашивает ТС. Последовательный единый базис, подобно университетским программам. А Грокаем книжка на пару вечеров.
И почему не про программирование, что мешает решать примеры из книгина любом ЯП?
Кормена стартовать без знаний в программировании мне кажется слишком сложно, а так да, порекомендовал бы и его.
Ну и раз в тегах что-то забыл питон можно докинуть "Изучаем Python" Лутца в двух томах. Но опять же это тянет на базис по питону, а не по программированию в общем.
ЯП - это разве не форма идей, закладываемых прикладным программированием?
Прикладной программист - это пользователь ЯП. Что он там может заложить в язык? Язык уже сделали без него. Прикладной программист может только уже использовать готовые идеи, которые заложены в сам ЯП, для решения собственных задач
Мне хочется в перспективе выйти за пределы типовых задач.
Каждый раз, когда захочется этого, то придется напрягаться и изучать что-то новое. А если не придется напрягаться - значит эта задача уже стала для вас типовой :)
Я не думаю, что изучение именно "языка" даст глубокое понимание, как и что работает.
Это зависит от языка. Питон - ну скорее всего кроме знания самого ЯП даст некоторое ограниченное представление об ООП. С++ - даст практически полное представление о возможностях ООП, некоторое понимании того как работает процессор и память. Так же если захотите погрузиться в сетевое программирование или параллельное программирование, то С++ предоставит эту возможность, питон то же, но с ограничениями и т.п.
В целом, я за изучение алгоритмов и даже настаиваю, что это программисту необходимо. Но
1. Кнут, на мой взгляд, не подходящий вариант для погружения в эту тему с нуля. Но если хотите Кнута и не боитесь математики - вперед. Почему бы и нет.
2. Алгоритмами тема программирования далеко не исчерпывается.
Последовательный единый базис, подобно университетским программам.
Давно не был в университете, но вроде бы чаще там учат алгоритмы по Кормену как раз. По крайней мере Кормена студенты знают, а Кнута, обычно, нет. Хотя у меня не репрезентативная выборка :-)
"Грокаем ..." - да на пару вечеров, я и писал, что это "легкое". Для понимания азов алогритмов и некоторых примеров достаточно. В дальнейшем, если понадобиться, можно будет углублять Корменом или Кнутом или чем-то другим.
что мешает решать примеры из книги на любом ЯП?
Ничего. Но если ты ноль, то ты не знаешь ни одного ЯПа. А Кнут пишет свои примеры на некотором абстрактном ЯПе, который сам придумал для книги. Вот и решай примеры как хочешь :-)
Для базы Таненбаума можно почитать. Ещё можно заморочиться по вещам типа SICP и HtDP. Но начинающему лучше выбрать какую-то наиболее интересную ему в этот момент сферу программирования, нагуглить самый популярный язык программирования из применяемых в этой сфере, прочитать учебник для начинающих по этому языку и попрактиковаться.
То есть лучше сконцентрировался на каком-то одном языке, где будут даны какие-то базовые понятия, и потом дополнять эти понятия, изучая другие языки? Многие рекомендуют python для начинающих. Мне выше посоветовали сперва "Грокаем алгоритмы", потом Кормена. Это хорошие учебники?
siemvv, "грокаем алгоритмы" - полная херня. И вообще начинать с алгоритмов - все равно, что начинать с изучения высокой словесности до освоения алфавита.
Сергей Горностаев, хорошо, вы посоветовали Таненбаума, но у него несколько книг и судя по их названию, они связаны не столько с программированием, сколько с аппаратным обеспечением. Я просто не знаю, насколько это имеет смысл в моем случае.
siemvv, Это не херня, но с программированием как таковым эта книга тебя не познакомит. Книга скорее подойдет для общего развития разработчику с базовыми навыками.
Присоединяюсь к сказанному выше. Личные впечатления - я бы на твоем месте выбрал один из "серьезных" языков программирования. C++, JAVA или С# на худой конец. Пожалуй просто исключил бы из списка вариантов исполняемые языки (джаваскрипт, питон и пр). По поводу конкретного курса не подскажу. Но бесплатной информации в интернете настолько много, что было бы желание. Для начала думаю любая книга "JAVA для чайников" подойдет.
То есть лучше сконцентрировался на каком-то одном языке, где будут даны какие-то базовые понятия, и потом дополнять эти понятия, изучая другие языки?
Думаю больше смысла изучить крепкую базу, которая реализуется в языках подобных приведенным мной выше. Если ты хочешь почерпнуть максимально, то начинать с пайтона мало смысла. Образно говоря, переходя с пайтона на джава, ты доучиваешься, а с джава на пайтон - приспосабливаешь уже имеющиеся знания к новым условиям.
siemvv, Kentavr16, "грокаем алгоритмы" - это очень поверхностная брошюрка по самым популярным структурам данных и алгоритмам. Грубо говоря весь текст вида "есть такая штука, как списки, их можно обходить". Как они устроены, как их обходить, для чего они - этого всего там почти нет.
siemvv, вы хотели серию, Таненбаум - это как раз серия, начинающаяся с самой основы - железа, продолжающаяся операционными системами и заканчивающаяся сетями. Это та база, которую стоит каждому программисту знать. Хотя сейчас мало кто её знает.
Kentavr16, многие учебники, которые я видел, предполагают наличие базовых навыков в программировании, а я ими не обладаю. Есть ли учебники по вышеназванным языкам, которые учат с полного нуля? Сперва базовые понятия, потом понятия, характерные для соответствующего языка? Чтобы не было так, будто ты читаешь учебник по английскому на английском, не зная ни одного английского слова.
Сергей Горностаев, не спорю конечно - в академическом смысле книга слабая. И да, скорее всего в контексте данного вопроса ее таки можно классифицировать как херню) Я скорее хотел сказать что в общем такая литература тоже имеет право на существование. Она проста, понятна, приятно составлена. Я с ней ознакомился когда только-только начинал интересоваться программированием, может потому остались приятные воспоминания.
siemvv, уверен что есть большое количество таких учебников, но конкретно не подскажу. Сам я первым языком выбрал джаваскрипт,и книги "с нуля" искал именно для этого языка. Тогда я погуглил, нашел книги с хорошими отзывами и "на вырост" в плане сложности. В принципе не пожалел.
Сергей Горностаев, кстати, а как по вашему мнению, Танненбаум морально не устарел? Или там есть свежие редакции? Вы так смачно его описали что самому захотелось почитать)