2009-06-26 4 views
3

В настоящее время я участвую в программировании, и я не принимал CS-классы, поэтому я в основном начинаю на дне. Я собирал код в течение многих лет, но на самом деле не очень хорошо разбирался в основных концепциях, необходимых для участия в крупных проектах. Объектная ориентация очевидна, и я чувствую, что начинаю понимать некоторые из концепций. Тогда есть много шума и методологии, таких как MVC, UML, SCRUM, SOLID и так foth и т. Д. Я посмотрел на многие из них, но я всегда тупой, поскольку большинство объяснений, похоже, требуют некоторого понимания другие понятия.Каковы основные понятия, которые все программисты должны изучать и использовать?

Я хочу изучить этот материал как «правильный», так с чего начать?

Каковы основные конструкции, которые мне нужно понять, чтобы я мог понять все основы архитектуры программного обеспечения/проектирования/разработки?

Что мне не хватает?

Существуют ли конструкции и концепции, которые могут и должны ждать, пока я не очистил фундамент?

+0

Возможный дубликат, см. Http://stackoverflow.com/questions/164048/basic-programming-algorithmic-concepts и http://stackoverflow.com/questions/402984/main-concepts-in-oop –

+0

Должен по крайней мере be CW – fretje

ответ

4

Принципы SOLID, вероятно, являются наиболее важными.

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

+0

Я только проинструктирован по принципам SOLID, но я обязательно прочитаю статью Unclebob «Принципы и шаблоны проектирования». Спасибо! – tplive

4

Свободная муфта, высокая степень сцепления.

А что касается книг, то Code Complete охватывает почти все на некотором уровне, по крайней мере.

+0

+1 для завершения кода! – gath

+0

Я посмотрю на книгу, из веб-ссылки это выглядит очень интересно. Спасибо за ваш совет! – tplive

0

Я бы рекомендовал «Объектно-ориентированный анализ и дизайн с применением» от Grady Booch et al. В последнем редакторе есть подробное объяснение концепций OOAD, включая MVC, UML (который он изобрел), а также дискуссии о том, как управлять всем процессом разработки программного обеспечения. Вторая часть книги иллюстрирует все это, разрабатывая 5 систем выборки (с иногда ортогональными аспектами от самого ядра).

+0

Я позаимствовал «Руководство пользователя унифицированного руководства по музыке» от Booch et al, от коллеги и начал изучать первые несколько глав. Я посмотрю и на другую книгу! Я люблю учиться на примере! Спасибо! :) – tplive

+0

ooad гораздо больше книг, чем просто руководство по uml, также проверьте это :-) – MadH

2

Разработка программного обеспечения - ОГРОМНАЯ арена, и вы должны быть осторожны, чтобы не слишком быстро перебирать слишком много. Если вы не пойдете в направлении функционального программирования, я бы посоветовал вам начать, убедившись, что вы полностью понимаете концепции, связанные с дизайном и программированием OO, поскольку это должно быть вашим основанием.

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

Я предлагаю вам попробовать несколько языков, пока не найдете то, с которым вам комфортно, лично мой любимый язык - это Ада, который является очень чистым языком OO, но в деловом мире я работаю на C#, который все еще имеет много но они перевешиваются более ярким рынком труда.

Я бы не стал слишком беспокоиться о Scrum на этом этапе, так как вам нужно больше сосредоточиться на своих навыках Dev, прежде чем беспокоиться об управлении проектами.

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

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

+0

ОГРОМНАЯ часть именно то, что вызвало мой вопрос - с чего мне начать, и что можно ждать? Спасибо за ваш ответ! – tplive

0

Еще один хороший один, конечно Design Patterns по GoF, которая даст вам представление о слабой связи, способов эффективной герметизации и повторного использования кода и т.д.

0

За то, что касается алгоритмической части, возьмите любую книгу который не ограничен определенным языком программирования. Моим любимым является Введение в алгоритмы Т. Х. Кормена и др., в некоторых случаях это немного теоретизируется, но мне особенно нравится, когда они доказывают определенные вещи, а не просто просят вас поверить в это.

0

Когда вы работаете с любым современным языком общего назначения, вероятно, неплохо получить дескриптор шаблонов (MVC или Model-View-Controller - один). Книга «банды четырех» - это обязательная информация для этого или, по крайней мере, исследование нескольких и использование ее в качестве ссылки. clicky

Рефакторинг - это еще одна концепция, которая должна быть в вашем арсенале. Книга Мартина Фаулера по этому вопросу - очень приятное чтение и помогает понять вышеупомянутые шаблоны, а также небольшое объяснение относительно UML.

Не могу размещать более одной гиперссылки так ...

поиска по Амазонке для: Рефакторинга, улучшение дизайна существующего кода

Если вы хотите сообщить свои проекты UML (Unified Modeling Language) является «инструментом» выбора для многих людей. Однако UML большой и громоздкий, но Мартин Фаулер (снова) сумел довести его до сути.

поиск по Амазонке для: УМЛ (убедитесь, что вы получите самый последние один)

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

Надеется, что это помогает ...

PS: SOLID Я не слышал о том же, кто-то должен помочь.

2

Держитесь подальше от ACRONYMS (включая те, которые вы указали) и Методологии (tm). По крайней мере, в начале.

Прочитать хорошие книги. Начните с этого: Pragmatic Programmer. Изучите алгоритмы и структуры данных, возможно, от Introduction to algorithms by Cormen et al.

Напишите много кода. Практика важнее всего.

+0

Хорошие книги всегда приветствуются. Но мне нужно знать, что я «экипирован», прежде чем брать любую книгу. Например, я просто заканчиваю книгу SitePoint «Создайте свой собственный веб-сайт с помощью ASP.NET 3.5», и это был хороший опыт обучения, но я чувствую, что я до сих пор касался самого конца каждой темы, охватываемой ... Поэтому мне нужно больше копаться в каждой теме, основываться на примерах и делать ее «моей». – tplive

1

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

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

+0

Я слышал об модульном тестировании, и это интересная тема, но я уволил ее, как я изначально думал это потребует слишком много понимания. Теперь я снова посмотрю на это. Спасибо за ваш совет! – tplive

+0

Вы уже тестируете свое программное обеспечение, вы просто отбрасываете юнит-тесты: вы пишете фрагмент кода, запускаете его, проверяете результат, исправляете ошибки, повторяете ... Автоматическое модульное тестирование просто сообщает компьютер, что правильно и неправильно, и пусть это проверит вас. –

0

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

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

Лично я настоятельно рекомендую разработку Agile Software от Robert C Martin.

Но это может быть долгим и утомительным чтением, если вы не чувствуете, что проблемы решаются. Я боюсь, что вам может потребоваться 500-1000 часов кодирования минимум, прежде чем вы получите оценку того, что решаемые проблемы: real.

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

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

0

Я чувствую любопытное глупо отвечая на мой собственный вопрос, как это .. :) Но один ценный ресурс я нашел для обучения, чтобы написать код, эйлерова проекта в http://www.projecteuler.net

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

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

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

+0

если вам нравится Project Euler. Попробуйте http://www.pythonchallenge.com/. Это сфокусированный на Python, но вы можете решить проблемы без Python. Мне это очень нравится, потому что вам нужно разблокировать следующий вызов. – bastianneu

Смежные вопросы