Возврат Мой «Образование» [закрыто]


13

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

Я не изучал основы (если бы вы называли их основами).

Я не узнал о компьютерных науках.

Я считаю, что эта проблема удерживает меня от моего истинного потенциала. Куда мне «перезагрузить»? Есть ли книги, статьи и т. Д., Которые я должен прочитать? Есть ли темы, которые должен знать опытный программист? Какой твой совет?


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

@JamesDrinkard: это было просто ради обучения! Я не делаю это для жизни.
Динамичный

Каков ваш фон? Вы знаете что-нибудь о науке? Math? Инжиниринг? Дерево работает? :-) Какой вид программирования вас интересует? Без этих деталей трудно дать полезный ответ. Кроме того, не жалейте, что прыгаете - это здорово!
Гай Сиртон

@GuySirton: я учусь в средней школе. У меня действительно нет причин программировать, я просто делаю!
Динамичный

Ответы:


21

Я бы сделал это:

Путь A: Полутипичный метод

  1. Изучайте язык с более упорядоченным синтаксисом, таким как Java, C # или Python. Perl - безумно полезный инструмент, но он также очень свободен в плане того, как он позволяет вам что-то делать. Другие языки, которые я перечислил, намного, намного меньше.

  2. Получить книгу о структурах данных на указанном языке.

  3. Получить книгу по алгоритмам на указанном языке.

  4. Получить полный и эффективный код Java / C # / Независимо от версии Python.

Путь B: Путь Просвещения Джоэла Спольски (или Смерть, сделай свой выбор)

  1. Получить книгу "Код"

  2. Получить K & R "Язык программирования C"

  3. Получить структуру и интерпретацию компьютерного программирования

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

Метод 2 более хардкорный, это гораздо более фундаментальный подход с «Кодексом», объясняющим основы, K & R вводит материал машинного уровня, а SICP вводит концепции более высокого уровня. Это гораздо сложнее, но более целенаправленный путь.

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

Приложение:

Что касается доступных бесплатных вещей: Python the Hard Way, как указано ниже, является хорошим началом, оттуда, Как думать как компьютерный ученый, является разумным продолжением.

Существует множество ресурсов по Алгоритмам, и, честно говоря, вы, вероятно, могли бы переключать шаги 3 и 4 без проблем. Имейте в виду, что здесь действительно начинает появляться математика, поэтому никогда не бойтесь просить о помощи, когда доберетесь до этой стадии. Это, кажется, разумное бесплатное руководство .

На самом деле не существует связного бесплатного эквивалента Code Complete, хотя Code вроде Pythonista выглядит довольно солидно. Главное - сконцентрироваться на том, чтобы сделать ваш код читабельным, как только вы освоите основы. Это не «необходимо» так же, как правильный синтаксис всего кода, но это значительно облегчает жизнь, когда вы выходите за рамки небольших программ или работаете над чем-то в течение длительного периода времени.

Вы можете обнаружить, что я сосредоточился в основном на Python, потому что это самый простой из трех, чтобы найти хорошо написанные бесплатные вещи. Я думаю, что уроки Java от Oracle хороши, но они немного суховаты и не очень хороши для начинающих. C # находится в аналогичной ситуации, хотя и не страдает от отсутствия документации.

Кроме того, ваша первая CS шутка / каламбур: вы хотите «рефакторинг» своего образования, а не Backtrack.


Спасибо! Вы случайно не читали бесплатные онлайн книги? Кроме этого, это удивительный ответ!
Динамичный

5
+1 для Структуры и Интерпретации компьютерного программирования (SICP) это может быть найдено онлайн здесь: mitpress.mit.edu/sicp
NWS

Зная Perl, доставит ли мне Python много хлопот, чтобы привыкнуть?
Динамичный

1
После Perl большинство языков будут немного скалистыми. Python довольно прост, потому что по сути есть 1 способ сделать что-то 1, а не 50 способов сделать 1 вещь, как в Perl. Большая хитрость Python - определить, какую версию языка использовать: 2.7 или 3.x. Я бы использовал любой выбранный вами учебник и пошел бы оттуда. Как только вы станете лучше в этом, вы можете приспособиться к другому, когда проекты будут появляться.
Мировой инженер

1
@kevincline: На самом деле, после выполнения некоторых упражнений на Python, это доставляет мне массу хлопот. ИМХО, некоторые вещи, которые чрезвычайно просты в Perl, сложны в Python.
Динамичный


1

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

Я начал с пакетных файлов DOS, затем QuickBasic, затем Visual Basic, VBA, MASM, с Access для работы с базой данных, прежде чем получил свою первую работу. Для меня это был лучший путь, начинать с простого, а потом строить оттуда.

Я бы сказал, решайте, что вам больше нравится в программировании, и выбирайте тот маршрут, сценарии, веб-разработку, программирование для Windows и т. Д. Если вы не знаете, тогда начните работать с некоторыми языками, чтобы увидеть, что вам нравится. Вам понадобится время, хотя. Требуется около 5 лет, чтобы стать действительно хорошим с таким языком, как Java или, может быть, C ++, IMHO.

Как язык, который помогает изучать веб-разработку, определенно JavaScript, PHP популярен и Python, но это IMHO. Предполагается, что вы будете знать или изучать HTML / CSS. Я действительно недооценил javascript, хотя использовал его с 2001 года. Я делал то же самое с CSS и не думал, что это важно. Я также изменил свое мнение по этому поводу.

Когда я пытаюсь определить тренд, я захожу на сайт http://www.indeed.com и нажимаю ссылку на тренд в левой верхней части страницы. Затем я вставляю ключевые слова, такие как PHP и Python, и вижу, какие из них используются для фактических вакансий, которые есть в Интернете.

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


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

-1

Узнайте об алгоритмах в их самой основной форме, на некоторое время забудьте о языках. Сортировка векторов, слов и т. Д. Freepascal - хороший язык для начала, я люблю Perl, но со всеми его ярлыками и классными вещами, вы часто будете пренебрегать внутренним алгоритмом программы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.