Подтвердить что ты не робот

Поиск чисто объектно-ориентированного языка

Я думаю, что объектно-ориентированное программирование переоценивается, однако я хочу изучить эту парадигму. Я пытался сделать это на PHP 5 и С++ с QT 4. К сожалению, я склонен программировать структурированным образом, я не использую большую часть наследования или несколько экземпляров. Я думаю, что мне нужно изучить чистый объектно-ориентированный язык, который заставляет меня использовать вышеуказанные функции.

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

Я работаю в основном на Linux x86-64.

4b9b3361

Ответ 1

Объектно-ориентированное программирование не связано с синтаксисом. Это парадигма программирования.

Язык может заставить вас использовать объекты (например, если все объекты являются объектами), но с использованием одного из этих языков не собирается "заставлять" вас изучать объектно-ориентированное программирование.

Я не использую много наследования или несколько экземпляров

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

Ответ 2

Если вам нужен чистый язык OO, попробуйте Smalltalk. Все это объект в Smalltalk. Это не относится к Java, где примитивные типы (int, float) сами по себе не являются объектами.

Если это не будет "чистый" язык OO, Java - хороший выбор, потому что он более мейнстрим.

Ответ 3

Попробуйте Java или С# на Mono.

Обоснование:

  • Я уважаю Smalltalk, и, конечно же, следует знать его концепции, чтобы лучше понять ООП, но изучение самого языка непрактично ИМХО.

  • Хотя Java и С# не могут быть "абсолютно чистыми" OOP-мудрыми (например, они включили некоторые из подходов к функциональному программированию), они по сути основаны на ООП, они являются основными (таким образом, имеют гораздо более крупные сообщества) и их легче освоить, чем Smalltalk IMHO.

Ответ 4

Для чистого ориентированного на объект языка посмотрите Smalltalk. Я читаю это сейчас.

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

Ответ 5

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

Мы не используем функции OO, потому что они фантазии, но потому что мы получаем время (включая длительный курс) с ними.

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

Ответ 6

Проблема не в языке. Независимо от того, какой язык вы используете, вы все равно можете кодировать все в одном классе или использовать методы уровня класса и в конечном итоге писать структурированный код. В то время как чистый язык OO сделает его сложнее, я сравнил много студентов, которые пытаются обучить структурированное программирование на Java и С#.

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

Ответ 7

Многие люди предлагают Smalltalk, поэтому я буду отличаться и предлагаю Eiffel.;)

Хороший язык для изучения принципов OO, также имеет аккуратные вещи, такие как DBC (Design By Contract).

Ответ 8

Я предлагаю python. Он передает критерии "все является объектом = > чистый язык OO", упомянутый несколькими другими для выбора Smalltalk. Функции и даже пустое значение python (None) - все объекты.

Это больше OO, чем Java (java имеет int и Integer). И что более важно, он намного более популярен, чем Smalltalk, поэтому вы с большей вероятностью сможете получить с ним помощь.

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

Ответ 10

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

Изучение "чистого" языка OO даст вам представление о том, как использовать функции OO, но поскольку вы не будете вынуждены выбирать, какую парадигму использовать для какой-либо данной части кода, она не даст вам Хорошее чувство, когда их использовать. Я думаю, что гораздо лучший способ научиться практическому ОО, в отличие от ОО как религии, - это изучить язык многопартийности, такой как D, Python или Ruby (или придерживаться С++ и PHP, хотя функции OO этих языков очень "заперты" на "), ознакомьтесь с шаблонами проектирования, чтобы понять" почему "OO, и постепенно попытайтесь интегрировать больше OO-дизайна в свои программы, с возможностью сравнить результаты с тем, что вы написали бы процедурно на одном языке. Версия OO часто будет лучше, но не всегда.

Ответ 12

Попробуйте общую систему объектов Lisp (CLOS). Это не "чистый" ООП, как Smalltalk, но иерархия типов в Lisp по крайней мере завершена (что больше, чем можно сказать для Java), а большинство других языков, даже языков OO, не имеют общих методов, multidispatch, комбинации методов, esp: before,: after и: around. объекты класса времени выполнения или reinitialize-instance, все из которых CLOS предоставляет.

Ответ 13

Я хотел бы предложить подход, подобный Agile, и просто написать код так, как вы считаете, естественным для вас. Затем попробуйте перефразировать его до парадигмы ОО. Я очень рекомендую классику Marin Fowler по этой теме (рефакторинг), а затем хороший обзор в "Четырех шаблонах дизайна" (очень известный, безошибочный), а затем, возможно, Джошуа Кериевский "Рефакторинг для шаблонов" и снова Fowler PoEAA, может вы очень далеки от понимания и мышления в ОО.

Это противоречит сдвигу с использованием подхода Up-Front-Deisng, пытающегося сделать OO после прочтения информации о концепциях OO. Не стоит упоминать, что хороший теоретический фон хорошо оплачивается, когда вы пытаетесь использовать подход, подобный Agile, но дух состоит в том, чтобы реорганизовать себя в OO вместо того, чтобы поворачиваться от всего, что вы сейчас делаете для OO.

Ответ 14

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

Мое предложение - не изучать другой язык, а изучать парадигму самого объектно-ориентированного программирования и различные способы планирования и реализации программы с использованием объектно-ориентированного анализа и проектирования. Узнайте о абстракции, инкапсуляции, наследовании и полиморфизме. Получите хорошее представление о UML. Затем изучите шаблоны проектирования, которые используются в объектно-ориентированном программировании.

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

Ответ 15

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