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

Лучший путь обучения в объектно-ориентированном программировании с C?

Каков наилучший путь для обучения ООП, если кто-то сделал программирование на C.

Мое намерение состояло в том, чтобы сначала совершить естественный прыжок и "увеличить с одним" и пойти на Страуструпа. Но так как я обнял маленького старого Бертран Мейера OOSC2 и я получил от приложения 1135 "... по словам Дональда Кнута, это сделало бы Эдсгера Дейкстра физически больным думать о программировании на С++" И сам Мейер ".., что С++ - не идеальный язык ООП..."

А как насчет этого Критика на С++ по этому вопросу: Критика С++

Должен ли я пропускать С++ и напрямую обращаться к С# или Java, если мое намерение - отличное и глубокое понимание современного OOP-языка, или я пропущу хорошие моменты по этому вопросу на С++?

Ну, я знаю, что это дискуссионная вещь, но я отмечаю ее wiki, и вы отвечаете за меня многого, что может пригодиться.

4b9b3361

Ответ 1

С++ - это не только язык ООП. Это мультипарадигма (процедурная, ООП, функциональная, общая...)

Итак, если вы хотите узнать только ООП, возможно, это не лучший выбор.

Ответ 2

Я бы предложил С#. Синтаксис подобен, но он достаточно разный, чтобы вы не возвращались к старым привычкам C. С С++ я всегда обнаруживал, что пишу C, со случайным объектом, брошенным.

Ответ 3

Да. Если ваше намерение - "отличное и глубокое понимание современного языка ООП", перейдите на современный язык ООП. С# определенно квалифицируется на "современный" счет и гордится тем, что является ООП. Что-то вроде Smalltalk будет языком ООП, но оно менее современно. Вы всегда можете узнать оба.

Что касается С++, это вряд ли является языком ООП. Существует много хороших и веских причин для изучения С++, но не для того, чтобы вас интересовали только ООП.

Сегодня С++ характеризуется не ООП, а такими функциями, как универсальное программирование и в некоторой степени вдохновленным функциональными языками.

Из С++ можно извлечь много полезных уроков. Некоторые из них:

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

Если вы спрашиваете, следует ли вам изучать С++, я бы сказал, что да (наряду с 5-8 другими языками, С++ не является "особенным" ). Это один из многих языков, которые программисты могут извлечь из обучения).

Если вы спросите, будет ли С++ хорошим введением в ООП, я бы сказал НЕТ. Именно поэтому стоит изучить.

Ответ 5

Основная идея С++ заключается в повторном использовании синтаксических идиом C, применяя к ним семантику ООП. Это приводит к объектам "в стеке", использованию ++ для итераторов и т.д. Синтаксис C был разработан в основном для облегчения реализации компилятора C, а не для ООП, и в результате С++ является довольно сложным языком и плохо подходит для обучения.

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

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

Ответ 6

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

Ответ 7

Любой язык будет работать, если вы узнаете его из хорошей книги. Я изучил как С++, так и Java, начиная с книг Брюса Эккеля.

После того, как вы знаете некоторые основы ООП, я бы предложил прочитать объектно-ориентированное программирование с использованием ANSI-C. Это даст вам некоторое представление о том, как работают языки ООП, поскольку он реализует язык ООП с языка C.

Ответ 8

Для Java-ориентированного введения я настоятельно рекомендую Head First Object Oriented Analysis and Design из отличной серии "Head First" от O ' Рейли.

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

Ответ 9

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

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

Но если вам нравится настоящий вызов, идите на это.

Гораздо больше ответов от меня на похожие темы:

Ответ 10

Я бы сказал Java. Хорошая книга, которая мне помогла, - этот.

Ответ 11

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

И поговорить о наборе техник, которые программисты на этом языке используют (программирование шаблонов), и действовать так, как будто что-то, что вам нужно использовать, глупо. Говорить, что вы можете "вернуться в C", является еще одной глупой причиной - вы можете избежать ООП на ЛЮБОЙ язык (например, на Java, вы можете написать программу в пределах одного класса).

Хотите узнать одну из лучших причин, чтобы изучить С++ по Java или С#? Есть еще много интересных проектов, которые уже находятся на С++, а затем в двух других. Это меняется со временем, но посмотрите на SourceForge, и кажется, что C и С++ все еще являются преобладающими языками для типов проектов, которые мне интересны (игры, веб-браузеры и т.д.).

Ответ 12

Я изучил ООП как в Ada95, так и в С++ и пришел из простых C и Ada83. Я не думал, что трудно понять концепции ООП с помощью С++, потому что я уже знаком с синтаксическими элементами и указателями.

Какова ваша цель? Чтобы стать хорошим разработчиком С++ или просто понять ООП?

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

Ответ 13

Как уже упоминалось ранее, С++ поддерживает более одной парадигмы программирования. Вероятно, наиболее примечательным является смешивание классов и объектов вместе с "глобальными" функциями, которые легко возможны в одном файле и контексте.

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

Для вашего решения, какой язык выбрать, я бы рекомендовал немного взглянуть в будущее на то, что вы на самом деле хотите сделать в программировании. Если это веб-дизайн или богатый пользовательский интерфейс, у вас будет больше возможностей использования Java или С#, это скорее что-то ближе к разработке системы, С++ может быть лучшим выбором. OOP вы можете изучать с С++ и Java, С# или другими языками.

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

Я думаю, что это правда, что, например, С# заставит вас намного больше, чем С++ писать OOP-код, но он делает это только с точки зрения языка SYNTAX. Но ООП больше о семантике, и это скорее не зависит от языка. Не существует семантической разницы между sin (0.5) (функция без контекста класса в C/С++) и Math.Sin(0.5) (метод класса в С#). Если вы закончите работу на С#, чтобы создать множество статических классов, что-то пошло не так с обучением ООП, хотя вы следуете (обязательно) объектно-ориентированному синтаксису.

Итак, мои два цента: попробуйте найти дополнительные цели программирования, которые вы выходите за рамки обучения ООП, и добавьте эти цели в свое решение для языка, на котором вы хотите погрузиться. Только для обучения OOP С++ в качестве примера языка хорошо, а некоторые другие языки также.

Мне нужно добавить: я сказал это с "прагматичной" точки зрения, предполагая, что вы действительно хотите работать и создавать программное обеспечение с тем, что вы узнали. Если у вас есть какой-то чистый научный, структурный интерес, мои аргументы могут быть неправильными. Тогда, возможно, самый чистый из всех языков OO (Smalltalk?, вероятно, не С++) является правильным выбором, независимо от того, кто на самом деле "говорит" на этом языке и с какой целью.

Ответ 14

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

Многие из других студентов были ИТ-специалистами. Я наладил хорошие контакты. Увы, это было 18 лет назад, и я почти потерял связь со всеми из них.

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

Ответ 15

Я с другими комментаторами, на С++ слишком легко вернуться на C. Структурно, Java и С# похожи на C, а основные языки почти идентичны друг другу. Когда вы научитесь думать OO, С++ будет намного проще.

Ответ 16

забыть о инструментах или прошлом (С++, oop, С##, обучение, мышление, попытка). позволяет поощрять творчество и импульс. Свежие подходы позволяют врезаться в будущее.

Что мне нравится в технологии, так это то, что она только начинается, Как искусство или математика

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

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

Я хочу включить эти же преимущества в Мои API

Лучшее счастье и благословение Бога