2009-09-14 4 views
8

Я всегда считал, что, когда начинаю изучать нового программиста, программист должен создать определенные проекты, чтобы лучше понять язык и/или рамки. Лично для меня это было с php (гостевая книга, абстракция DB, механизм шаблонов), ruby ​​(на рельсах, твиттер, как веб-сайт, активный плагин записи, простой драгоценный камень) и object-c (какао, todo-list, twitter client).Первые обязательные проекты как хобби

Мне интересно, какие проекты должны быть программными для других языков программирования, таких как Java, C++, Python и т. Д.? Может быть, у вас есть другие языки изучения пути?

ответ

11

ProjectEuler

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

3

Для Java Я думаю, что-то вроде системы инвентаризации будет в порядке, поскольку он охватывает большую часть материала, как в объектно-ориентированных концепциях, графический интерфейс, программирование баз данных и т.д. Он достаточно умен, чтобы начать с

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

2

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

Но когда я все время изучал новые языки, у меня была простая стратегия: моей первой программой был ваш основной «привет, мир», что-то, что просто отображает сообщение и выходит. Моя вторая программа - «Жизнь». (См., Например, http://www.math.com/students/wonders/life/life.html)

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

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

+1

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

+0

Несомненно. Но когда я изучаю новый язык, первое, что я хочу узнать, это основы. Как мне сделать i/o? Как читать файл? Как вызвать подпрограмму? И т. Д. Моя первая программа на C++/Windows сильно отличалась от моей первой программы Fortran, потому что, да, философия дизайна позади них очень различна, то есть объектно-ориентированный и графический интерфейс, а также процедурный и TTY. Я не хотел, чтобы мой комментарий «уже знаю решение» был принят так далеко. Я имел в виду, что когда я пишу свою первую программу, я хочу думать о том, как работает язык, а не бороться с функциональными требованиями. – Jay

2

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

  • Они, как правило, более приятны для реализации, потому что они являются играми в конце концов.
  • У них есть четко определенные правила, поэтому вы не тратите много времени на выяснение спецификации вместо написания программы.
  • Они, как правило, имеют приятный средний уровень сложности. Достаточно трудно, чтобы не быть простым и достаточно простым, чтобы вы могли делать это через несколько часов или дней.
  • Они имеют тенденцию быть независимыми. И.Е. вам не нужен бэкэнд базы данных для шахмат, если вы действительно не хотите - в отличие от более реального приложения, такого как блог, где база данных в основном обязательна.
  • С большим количеством игр, вы можете придерживаться только текста или ASCII искусства UI, который стремится упростить вещи при изучении языка

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

+0

Hangman - это именно то, что я бы сделал - см. Мой предыдущий пост. Монополия кажется довольно сложной игрой, чтобы запрограммировать проблему броска. Возможно, вы уделяете гораздо больше усилий практике, чем я. Или, может быть, я переоцениваю, сколько усилий это стоит. Ну что ж. – Jay

+1

Монополия находится на верхнем конце игр, которые я бы сделал для практики. Хотя, если у вас есть только текстовый интерфейс, я только хочу сделать реальный интерфейс, если я хочу попрактиковаться в интерфейсе пользовательского интерфейса, его неплохо, может быть, 20-30 основных правил, о которых вы хотите беспокоиться. Плюс, если вы нажимаете на время или что вы не можете всегда произвольно отказаться от правил. Главное, что мне нравится в этом, - это то, что подход OO хорошо работает с ним и упрощает его. Почти так, как я пытаюсь это написать, у меня есть как минимум игрок и класс собственности. В чем-то вроде палача, я стараюсь писать процедурно, так как это так просто. – Joshua

+0

Хмм, напоминает интересную мысль: с большинством современных языков, являющихся ООП, возможно, проблема хорошей практики - это задача, которая реализует несколько объектов, которые имеют фактические методы, а не только контейнеры данных, и это включает в себя некоторые подклассы. Таким образом, вы немного разбираетесь в том, как «объект объекта» работает на этом языке. – Jay