Как я могу получить больше опыта программирования [закрыто]

9

Я собираюсь учиться на третьем курсе по информатике, и я прочитал Head First Java, Head First C, и в настоящее время я читаю C ++ - язык, который мне нравится больше всего, поскольку он имеет хороший стиль преподавания для людей с опытом. Я планирую либо научиться создавать программы с использованием QT, изучать цель C (для iphone) или читать Effective C ++.

Как я могу получить опыт работы программистом? Есть ли у меня навыки, чтобы присоединиться к проекту с открытым исходным кодом или мне нужно изучать PHP, MySQL или любой другой язык. Я люблю программирование и информатику в целом, хотя некоторые занятия могут быть очень сложными (теоретическая информатика). Я также планирую стать гуру в C ++, но это будет не скоро.

Энтони
источник
1
Вы написали какие-нибудь программы, которые используют другие? Если нет, напишите, что нужно любимому члену семьи, и сделайте его полезным для него (для нее может потребоваться несколько итераций). Последняя часть - то, где истинный урок.
Как вы попали в Карнеги-холл?
jfrankcarr
1
Я буду звучать как мудак на секунду, но ... опыт - активное участие в событиях или мероприятиях, ведущих к накоплению знаний или навыков. Так что начните активно участвовать в программировании.
Стивен Эверс
1
Кстати, в чем разница между StackOverflow и программистами? Разве шаблон закрывающих вопросов предназначен для того, чтобы сделать программистов просто еще одним StackOverflow? Какой смысл тогда - просто объединить два. Мы привыкли задавать эзотерические вопросы программистам, которые мы не могли задавать в StackOverflow.
שינתיא אבישגנת

Ответы:

11

ABC - ВСЕГДА БУДЬТЕ КОДИРОВАНИЕМ. Это действительно так просто. Один из моих любимых способов познакомиться с языком - написать игрушечного переводчика для подмножества языка на самом языке или, если это не ваша вещь, то, возможно, трассировщик лучей или что-то еще достаточно большое, чтобы быть нетривиальным но не настолько большой, что это не может быть закончено через месяц или около того. Суть в том, чтобы поработать над тем, что заставит вас взглянуть на стандартную библиотеку и средства абстракции данных, которые предлагает язык. Иногда проект оказывается успешным, иногда это не так, но в конце я знаю достаточно о языке, чтобы понять его сильные и слабые стороны и хочу ли я продолжить изучение. Если выясняется, что мне нравится язык, то каждый раз, когда я читаю интересную статью или сообщение в блоге, я пытаюсь запустить проект, в котором я воплощаю некоторые идеи, представленные в статье или сообщении в блоге. Таким образом, я всегда получаю практику и изучаю новые идеи, так что это становится добродетельным циклом.

Некоторые проекты, которые очень хорошо работали для меня в прошлом: интерпретатор для некоторого подмножества какого-либо языка, ray tracer, генератор PEG-анализатора, синтаксический анализатор HTTP-заголовков, простой клиент / сервер echo, бот Twitter для автоматической отправки твитов из очереди, продукт amazon скребок для поиска сделок.

davidk01
источник
+1 Вы упомянули несколько действительно интересных проектов, спасибо.
Энтони
8

Как хорошо объяснено в разделе «Обучение программированию за десять лет» , вы должны выполнить следующие шаги:

  • Занимайтесь программированием и занимайтесь чем-нибудь, потому что это весело. Удостоверьтесь, что это будет достаточно забавно, так что вы будете готовы потратить свои десять лет / 10000 часов.

  • Программа . Лучший вид обучения - это обучение на практике. Говоря более технически, «максимальный уровень производительности для людей в данном домене не достигается автоматически в зависимости от расширенного опыта, но уровень производительности может быть повышен даже опытными людьми в результате преднамеренных усилий по улучшению «. (стр. 366) и «для наиболее эффективного обучения требуется четко определенная задача с соответствующим уровнем сложности для конкретного человека, информативная обратная связь и возможности для повторения и исправления ошибок». (стр. 20-21) Книга «Познание на практике: разум, математика и культура в повседневной жизни» является интересным справочным материалом для этой точки зрения.

  • Общайтесь с другими программистами; читать другие программы . Это важнее, чем любая книга или учебный курс.

  • Если хотите, отведите четыре года в колледж (или больше в аспирантуру). Это даст вам доступ к некоторым работам, требующим полномочий, и даст вам более глубокое понимание области, но если вы не ходите в школу, вы можете (с некоторой преданностью) получить аналогичный опыт самостоятельно или на работе , В любом случае, учебы в одиночку недостаточно. «Образование в области компьютерных наук не может сделать кого-либо опытным программистом, так же как изучение кистей и пигмента не может сделать кого-то искусным художником», - говорит Эрик Рэймонд, автор «Нового словаря хакеров». Один из лучших программистов, которых я когда-либо нанимал, имел только высшее образование; он создал много отличного программного обеспечения, имеет свою собственную группу новостей и сделал достаточно акций, чтобы купить собственный ночной клуб.

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

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

  • Выучите как минимум полдюжины языков программирования. Включите один язык, который поддерживает абстракции классов (например, Java или C ++), один, который поддерживает функциональную абстракцию (например, Lisp или ML), один, который поддерживает синтаксическую абстракцию (например, Lisp), один, который поддерживает декларативные спецификации (например, шаблоны Prolog или C ++), один который поддерживает сопрограммы (например, Icon или Scheme), и тот, который поддерживает параллелизм (например, Sisal).

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

  • Примите участие в работе по стандартизации языка. Это может быть комитет ANSI C ++, или он может решить, будет ли ваш локальный стиль кодирования иметь 2 или 4 уровня отступа. В любом случае, вы узнаете о том, что нравится другим людям на языке, как глубоко они это чувствуют, и, возможно, даже немного о том, почему они так чувствуют.

  • Имейте здравый смысл как можно быстрее завершить работу по стандартизации языка.

BЈовић
источник
3

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

Я бы сказал, что чтение также играет важную роль, вы могли бы искать команду разработчиков, которые размещают проект с открытым исходным кодом (найдите один на github или других подобных сайтах), потому что они могут предложить вам ценный опыт групповой разработки.

Bugster
источник
2

Иногда такие места, как sourceforge, поначалу немного пугают. Действительно хороший способ найти что-то, что можно сделать, - это просмотреть трекеры проблем проектов и найти ошибку / проблему, которая вам нравится, как исправлять ошибки.

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

LWM
источник
1

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

Работа над реальными проектами

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

Проблемы - это возможность показать, на что ты способен

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

Кайзер
источник
-1

Нужно ли учить PHP, MySQL или любой другой язык.

Да, сэр, пожалуйста, рассмотрите языки всемирной паутины. HTML5, CSS3 и JavaScript.

Вот почему:

  1. Они быстро учатся и становятся все более богатыми для реализации.

  2. Они больше не просто пишут в Интернете, но также создают ОС, сервер и базу данных.

  3. Самое главное *

    Теперь они используются для переопределения Computer Science 101 - создателем jQuery Джоном Резигом.

Не стреляйте в курьера, просто проверьте эту ссылку на ханскую академию .

Шаблоны проектирования c / c ++ / c # передаются в JS.

Надеюсь, это поможет.

Джек Стоун
источник
+1 - Так неправильно, что за это проголосовали. Информация действительна. Ссылка заслуживает доверия. Источник - jQuery Genius Джон Резиг, начинающий курс по программированию с JavaScript, и он будет работать. Проверьте Хан Академию. Повышение за потенциал для продвижения образования; в меньшей мере. Спасибо.
Джек Стоун