LINUX.ORG.RU

Наставление на True Way

 ,


1

2

Здравствуй ЛОР. Нужна Ваша помощь/совет. Решил учиться программированию, перечитал кучу холиваров и решил начать с Си. Смотрел курсы, читал книги, решал примеры, какие мог. В общем основы понял, но чтобы написать что-то серьезное, так и не дошел до этого.

Далее решил, что мне поможет SICP, начал читать, смотреть видео, но остановился на середине 1 главы, т.к. не получалось решить задачи.

Потом я решил взяться за алгоритмы и структуры данных, начал читать Лафоре «Структуры данных и алгоритмы Java». Сейчас осилил 3 главы. Параллельно взялся за Java, и начал читать читать Core Java Хортсманна на инглише.

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


Далее решил, что мне поможет SICP, начал читать, смотреть видео, но остановился на середине 1 главы, т.к. не получалось решить задачи.

Продолжай решать, ёмана. Если совсем не получается - читай решение, и через несколько дней или неделю пытайся опять решить, вспоминай на чём запоролся.

grimwaken ()

Что бы научиться программировать надо программировать.

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

ЯП зависит от задачи, но от знания С никому точно хуже не становилось, С конечно лучше знать чем не знать.

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

Много где читал, что лучше начинать с Си. На каком уровне его нужно изучить для новичка? K&R читал, но не осилил до конца.

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

но остановился на середине 1 главы
так и не дошел
Параллельно взялся
не осилил до конца

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

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

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

Спасибо за совет. Я это понимаю, но бывает чувство что не с того начал. Что первостепенно учить? Алгоритмы и структуры данных или всякие низкоуровневые вещи, такие как Си, asm и т.д. Или все же лучше пока взяться серьезно за SICP?

effc ()

Начни с постановки задачи. Чего хочешь-то? «Научиться программировать» — это не задача

Gvidon ★★★★ ()

True Way

Такого не существует

Debasher ★★★★★ ()

Но мне кажется, что двигаюсь не в ту сторону

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

Первое что нужно сделать когда ты решил заняться программированием это ответить на вопросы «Зачем мне это нужно?» и «Что я хочу делать?».

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

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

umren ★★★★★ ()

to effc

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

anonymous ()
Ответ на: комментарий от umren

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

effc ()
Ответ на: to effc от anonymous

Спасибо, подумаю над этим. Возможность зарабатывания в будущем не отрицаю.

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

Алгоритмы без знания языков смысла особого не имеют. Поэтому сначала язык. Си хороший выбор для начала, ознакомится с asm по ходу лишним не будет, но без необходимости сильно можно не вдаваться, достаточно получить представление во что компилируется высокоуровневый код (Си - это язык высокого уровня). SICP не читал, но у меня опасение, что это довольно далеко от реальности (не значит, что это вредно, но не факт, что особо полезно). Алгоритмы и структуры данных нужно, но после изучения языка и успешного написания чего-нибудь простого. Многие алгоритмы и структуры данных отражают примитивные средства, которые хорошо отображаются на память в Си. На чём-то скриптовом или сверх-высокоуровневом, оно будет всего лишь верхушкой огромного малоповоротливого айсберга, и спуститься с него до реального понимания процесса будет сложно.

xaizek ★★★★★ ()

можешь попробовать питон у него есть несколько сильных сторон: он достаточно прост

его много где используют

это универсальный язык подходит как для писания своих велосипедов для *nix* так и для программирования бекенда серверов, написать игру или декстопную программу на нём тоже можно

куча готовых библиотек и фреймворков

на нём можно зарабатывать

он кросплатформенный

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

для него есть хорошие интерактивные курсы от коде академи очень просто просто взять и начать програмировать прямо в браузере вот сыль http://www.codecademy.com/

и ешё одна с небольшой подборкой литературы http://habrahabr.ru/post/150302/

novoxudonoser ()
Ответ на: комментарий от unt1tled

в университет сходи, например

Накой? Программирование вместе со всеми алгоритмами - это уровень техникума в лучшем случае. А тому кто в универах по барабану на чем «программировать» будут.

r_asian ★☆☆ ()

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

SICP как раз курс для начинающих (он вроде бы есть и для Python).

не получалось решить задачи.

И пока не получится, толку не будет.

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

Программирование

в универе в основном хорошие профессора, а не блондинки обучают и обучают лучше

со всеми алгоритмами

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

А тому кто в универах по барабану на чем «программировать» будут.

так ведь это и есть цель, не?

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

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

Уйдет много времени, толку будет мало.

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

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

Простой пример - SICP.

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

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

Начала алгоритмов и структур данных есть в SICP.

Kuzy ★★★ ()

Слушай, СИКП надо читать когда уже какой никакой опыт есть, сразу не надо. Я сначала прочитал книгу, которая что-то среднее между обучением ЯП и практикумом. Причём там был хороший практикум. Можешь поискать что-то наподобие. Кстати, имхо, нет ничего плохого в том чтобы пропускать совсем не идущие или не интересные главы, позже со временем восполнишь пробелы. Мозги напрягать надо как никогда в начале, это да, высокий порог вхождения, новая область и тд. Это самая база. Дальше захочется самоутвердиться своим проектом. Потом запостишь пост об этом. А и ещё, не пиши на низкоуровневых или слишком сложных ЯП. Возьми для начала что-нибудь попроще но с хорошими идеями изкоробки(развитые операции над последовательностями, паттерн-матчинг, высокоуровневые структуры данных). Это вот без понтов. Если с понтами - бери хаскелЪ, С, керниган ричи, читай сикп, лисп для лохов, пиши на руби, не пиши на руби!

pseudo-cat ★★★ ()

Решил учиться программированию, перечитал кучу холиваров и решил начать с Си.

Где-то с улыбкой довольно откинулся на спинку трона Царь.

Virtuos86 ★★★★★ ()

решил начать с Си

написать что-то серьезное, так и не дошел

Далее решил, что мне поможет

не получалось решить задачи

Потом я решил взяться за алгоритмы

осилил 3 главы

Параллельно взялся за Java

Хортсманна на инглише

мне кажется, что двигаюсь не в ту сторону

То есть это после курения Джавы на инглыше тебя вдруг осенило, что что-то идёт не так?

выбираю не те инструменты

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

не с того начал

Начал с того, не тем продолжил. И не довёл до конца начатое.

Занялся всем этим пару месяцев назад.

Пара месяцев даже для Сей мало.

И с областью в программировании еще не определился.

Твори. Выдумывай. Пробуй.

Deleted ()
Ответ на: комментарий от pseudo-cat

А и ещё, не пиши на низкоуровневых или слишком сложных ЯП. Возьми для начала что-нибудь попроще но с хорошими идеями изкоробки(развитые операции над последовательностями, паттерн-матчинг, высокоуровневые структуры данных).

Это что-то наподобие python?

effc ()
Ответ на: комментарий от unt1tled

в университет сходи, например

Если только в физтех какой

Deleted ()
Ответ на: комментарий от effc

Есть еще мнение что лучше начинать с паскаля;-)

Или с питона - тоже хороший, актуальный ЯП.

Я затрудняюсь ответить про уровень, это зависит от решаемых задач.

«Хочу изучить столярное дело, на каком уровне мне нужно овладеть стамеской?» - Ваш вопрос примерно такой же;-)

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

не буду что-то конкретное рекомендовать, языков много, хороших и разных.

pseudo-cat ★★★ ()
Ответ на: комментарий от umren

+много.

И еще, программисты-идеально-знающий-самый-лучший-в-мире-ЯП НЕ НУЖНЫ. Нужны программисты, знающие предметную область в которой они работают (бухгалтерию, вебню, числ.методы и т.д. и т.п. - зависит от области) и умеющие свои знания воплощать в работающий код на актуальном ЯП за приемлемое время.

Поэтому нужно брать интересную задачу из знакомой Вам предметной области (чем Вы там помимо изучения ЯП занимаетесь) и пытаться ее как нить решить.

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

SICP как раз курс для начинающих

HTDP для еще более начинающих.

loz ★★★★★ ()

true way — это дискретная математика и Кнут «Искусство программирования», но их, как и unix way, многие не ценят.

anonymous ()

Попробуй Ocaml, может быть понравится.

anonymous ()

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

Например, задачу вывести на терминал числа от 1 до 10 можно решить с помощью цикла while, цикла for, рекурсии, формирования строки со всеми числами и печати этой строки, заполнения массива и печати его содержимого, записи чисел в файл и печати содержимого файла и другими способами в зависимости от изучаемой темы.

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

Если хочешь продолжать изучение Си, попробуй Tiny C Compiler, который умеет работать в режиме интерпретации.

gorky ★★ ()

Решил учиться, но гнилые отмазки.
Далее решил, но остановился..., т.к. гнилые отмазки.
Потом я решил...

1) Перестать лепить гнилые отмазки
2) Стать ответственным и решительным, яйца и волю в кулак и идти осиливать уже материал до конца!
3) Рассмотреть альтернативы, пока видно, что программирование не твоё.

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

Идти на пролом выбирает наш головастый дуболом.

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

pseudo-cat ★★★ ()
Последнее исправление: pseudo-cat (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.