Я хотел выучить объектно-ориентированный язык программирования, я не хочу ни для чего просто знать всю концепцию ООП. Так кто-нибудь может сказать мне, какой язык я должен начать изучать?
Я хотел выучить объектно-ориентированный язык программирования, я не хочу ни для чего просто знать всю концепцию ООП. Так кто-нибудь может сказать мне, какой язык я должен начать изучать?
Ответы:
Некоторые дальнейшие предложения:
Самая лучшая книга , которую я когда - либо читал на OOP ни один бар является Бертрана Мейера объектно - ориентированного программного обеспечения строительства . Это не «легкое» чтение, в котором вам нужно будет хорошо подумать. Но это лучшее, что я видел, объясняя принципы ОО.
Что касается языков: я бы держался подальше от C ++. Просто слишком большой для учебных целей. Если вам нужен язык, который действительно поможет вам понять ОО (в отличие от того, на котором вы будете писать основные приложения / использовать работу), посмотрите на Smalltalk. Или Эйфель (язык в книге Мейера выше).
Если вам нужен язык, который немного более распространен, но все еще верно поддерживает принципы ОО, тогда Python - хорошая ставка. Java и C # тоже неплохие, если вы хотите статическую типизацию.
Одно слово предостережения, хотя: язык не научит вас ОО. Он может только помочь (или помешать) тому, насколько хорошо он поддерживает концепции ОО. Изучение ОО на самом деле означает обучение мыслить в терминах ОО. Для этого я вернусь к книге Мейера.
НТН.
Вы можете изучить любой из объектно-ориентированных языков, таких как C ++, Java, C # и т. Д., Чтобы попробовать OOPS.
Если вы действительно хотите изучать ООП, вам нужно думать не только о языках и понимать, что это парадигма, которая помогает сложным мангам, вовлеченным в программы, точно так же, как мы управляем ими в этом реальном мире. Затем изучите основные понятия в ОО, такие как полиморфизм, наследование, инкапсуляция (PIE) и т. Д.
Есть хорошие книги о слишком объектно-ориентированном анализе и проектировании с приложениями (2-е издание) Грэди Буча
Кроме того , вы можете попробовать блоги , как это , которое я нашел просто достаточно , чтобы начать с- fascinatingoops.com
Вы хотите узнать ООП? Один ответ - Smalltalk.
Это элегантный язык и является ОО по сути. Вы изучите ООП с самого начала, и вам не будут мешать все остальные отвлекающие факторы, которые другие языки могут включать.
Smalltalk побеждает. И есть несколько хороших бесплатных электронных книг (см .: Stephane Ducasse )
Вам придется изучать C ++ или, возможно, одного из предков, таких как Smalltalk. C ++ предлагает четкое разделение между такими понятиями, как объектная ориентация, управление памятью и ссылка на значение, и имеет мощную общую поддержку.
Не учите Java или язык .NET, такой как C #. Когда вы изучаете такой язык, как Java, вы изучаете такие вещи, как «Объекты всегда в куче и всегда являются ссылками», что верно только для Java и абсолютно не верно для ООП в целом. Такое смешение понятий (объектная ориентация, управление памятью, ссылка на ценность) очень опасно для первого языка, потому что, как только вы запутаете их в своей голове, может быть очень трудно вернуть их обратно. C # несколько лучше в этом отношении, но не намного. Кроме того, они могут иметь высокую склонность учить «Наследование - это молот, а все - гвоздь» при слабой общей поддержке программирования.
Лучший способ изучить концепции ООП - это писать все больше и больше кода и регулярно его пересматривать. Практика делает хорошего программиста.
Думайте о реальных сценариях, определяйте формулировку проблемы - решайте ее в коде и проверяйте. Вы всегда можете получить помощь от /codereview// для отзывов :)
Удачного кодирования !!!
меры
Моим первым знакомством с миром OO был C ++, что было неплохим началом. Но я сильно улучшился при изучении Python. Разница заключается в языках: для проверки идей («как я могу решить эту проблему в ОО-стиле?») В C ++ требуется больше кода для написания и в нем гораздо больше подводных камней, чем в той же идее в Python. Поэтому я бы порекомендовал Python.
Я не думаю, что вы должны смотреть на другой язык, пытаясь выучить ООП. Для меня легче понять теорию, а затем научиться применять ее, если я могу относиться к тому, что я уже знаю. Выяснение нового синтаксиса только мешает.
Вы можете начать с любой ООП книги. Опять же, я бы получил один на моем языке по выбору. Чтение книги по рефакторингу (стиль ООП) помогло мне в применении ООП. Я взял существующий проект (не отвлекаясь от сбора требований) и нашел новые способы его улучшения. Это было не просто ООП ради ООП. Затем вы можете научиться делать это от начала до конца в новом проекте. Логика здесь в том, что вы не всегда поймете это с самого начала. Если вы можете узнать, где это уместно, вам будет лучше. Как и большинство вещей, это не решит всех проблем.
Есть определенные ограничения с некоторыми языками. Если ваша цель состоит в том, чтобы стать мастером многократного наследования, .NET отсутствует.
Я пойду против традиционного мышления и предположу, что самые простые языки для использования ООП не обязательно являются лучшими языками для изучения . Сначала я познакомился с ООП с C ++, но я не «понял» его, пока не прочитал главу книги Ларри Уолла о верблюдах ООП с Perl. По какой-то причине мне было трудно понять разницу между классами и объектами, пока я не получил явное благословение объекта в классе. Я действительно не понимал основную реализацию ООП, пока не сделал это в C с GObject, где ни одна из этих деталей не скрыта от вас. Я действительно не понимал лучшие практики, пока не взял корпоративный класс, который был независим от языка. Это очень большая тема,,