Как лучше всего действовать в долгосрочной перспективе:C, Objective C или C++?[закрыто]

StackOverflow https://stackoverflow.com/questions/109937

  •  02-07-2019
  •  | 
  •  

Вопрос

Одна вещь, к которой я действительно хотел вернуться, - это программирование на C++, но я не уверен, стоит ли мне вернуться к C++ (с которым у меня есть некоторые базовые знания консольного программирования) или мне следует изучить C или Objective C?Я смотрю на долгосрочную перспективу, а также на простоту кодирования, например, на хорошие редакторы, компиляторы и т. д., а также на то, что будет быстрее всего настроить и запустить.

В дополнение к этому, какое программное обеспечение вы бы предложили для работы с предложенным языком?

[РЕДАКТИРОВАТЬ]

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

Это было полезно?

Решение

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

Чистый C часто является единственным вариантом для операционных систем, разработки драйверов или встроенных сред разработки.Другие варианты использования включают случаи, когда производительность очень важна, когда вы хотите быть как можно «ближе» к внутренним компонентам машины.Знание C никогда не помешает, потому что его применения, похоже, не исчезнут в ближайшее время.C также является «лингва-франка» для многих приложений *nix.Поэтому, если вы хотите внести свой вклад во множество проектов с открытым исходным кодом (apache/svn/cvs/и т. д.), знание C будет обязательным.

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

C++ часто критикуют за то, что он пытается дать слишком много вещей слишком многим людям.Критики говорят, что попытка сделать все не очень хороша ни в одном деле.Раньше C++ был «лингва франка» для настольных приложений, но Java и .Net действительно отобрали у многих корпоративных пользователей.Тем не менее, многие приложения, которым важна как производительность, так и использование огромного количества дополнительных, полезных, обычно достаточно хороших для ваших целей функций, доступных только в C++, выберут C++.

Другие советы

Если вы работаете в основном с Windows, я бы предложил C++.Microsoft много работает над новым C++/CLI и собственным компилятором C++.С новыми дополнениями TR1 и C++0X решаются многие проблемы, существовавшие в прошлом.

Я бы сказал: выберите любой язык, который вам нравится, и придерживайтесь его какое-то время.А пока сосредоточьтесь на алгоритмах.Это строительные блоки программ.Язык – это просто язык.

Если вы выучили/освоили один язык, то переключиться на что-то другое — это всего лишь вопрос нескольких недель, особенно если вы остаетесь в той же семье языков (например,C, C++, Objective C, Java, C# и т. д.)

Если вы думаете, что Apple когда-нибудь будет править миром, Objective C.

Сейчас я думаю, что разработка iPhone Cocoa находится на том же уровне.Итак, лично Obj-C.

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

Мое мнение:

Из трех показанных вами вариантов лучшая начальная ставка, вероятно, будет C.Если вы знаете C, разбираетесь в его особенностях и владеете им, изучение C++ или Objective-C, скорее всего, будет довольно тривиальным.(Самые трудные моменты будут в области объектной ориентации.)

На данный момент используется Objective-C. чаще всего на Mac, но некоторые забывают, что инструменты GNU существуют для Objective-C и что они также поддерживаются в GNUStep.(Текущая Mac OS X во многом основана на старой NextSTEP, клоном которой является GNUStep.) Однако особенность Objective-C в том, что она не широко используется за пределами этих двух сред, что делает ее чем-то вроде узкая среда.(И с Obj-C, как и с любым другим современным объектно-ориентированным языком, вы потратите гораздо больше времени на изучение классов инфраструктуры, чем на изучение основных синтаксических/лексических правил.)

В первую очередь я разработчик C#.Это оплачивает мои счета, и делает это хорошо.C# не было в вашем списке, и я подозреваю, что знаю почему:Звучит так, будто вы хотите быть ближе к металлу, а не отвлечённо.Я это понимаю и считаю, что это правильный выбор для долгосрочного карьерного роста.Я начал с множества абстракций между моим кодом и коробкой (сначала профессионально с Java, затем с VB6, затем с .NET), и в результате теперь я усердно работаю в свободное время, чтобы «догнать» остальных разработчиков. мир -- В настоящее время я прохожу через книга К&Р.Признаюсь, у меня нет профессиональной необходимости приближаться к металлу, но я чувствую личную потребность понять машину как можно лучше.

(Плюс, по иронии судьбы, я собираюсь вернуться к разработке Cocoa с помощью Objective-C.Раньше я возился с этим много лет назад, и думаю, что сейчас у меня больше возможностей «достать» это…Лично я считаю, что предвидение C сделает переход на Objective-C намного проще и плавнее и снизит вероятность появления катастрофических ошибок, связанных с памятью, в моем коде!)

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

Я смотрю на ваш вопрос немного по-другому и в конечном итоге предлагаю вам изучить Objective-C.У меня есть несколько причин для этого.

Во-первых, Obj-C имеет совершенно другой взгляд на объектно-ориентированную модель, которая обычно реализуется в таких языках, как C++.Obj-C основан на Smalltalk, и поэтому все «вызовы методов» реализуются как сообщения, отправляемые соответствующему объекту.Благодаря этому программисты смогли расширить это до некоторых очень интересных и довольно мощных методов.Одной из причин изучения нового языка всегда должно быть расширение вашего представления о том, как все может работать — в этом отношении Obj-C имеет гораздо больший потенциал, чем C или C++.

Во-вторых, Obj-C, по крайней мере на Mac, имеет чрезвычайно мощную платформу с отличным набором инструментов.C и C++ на самом деле не имеют одинаковой связной структуры ни на одной платформе, хотя Microsoft, вероятно, приближается к их реализации.Одной работы с Cocoa было достаточно, чтобы убедить меня в том, что Obj-C — отличный язык.Библиотека действительно хорошо продумана и заставляет меня завидовать тем, кто работает с ней изо дня в день.

В-третьих, Obj-C — это расширенная версия C, поэтому, изучив его, вы уже будете знакомы с синтаксисом C.Кроме того, стандартная библиотека C довольно анемична, и ее можно изучить довольно быстро.C++ немного лучше, поскольку доступен Boost, но Boost далеко не так связен, как Cocoa.

В конечном итоге вам нужно решить, каковы ваши приоритеты.Если вы просто хотите узнать что-то новое, используйте Obj-C.

Зависит от того, что вы делаете.Если бы мне пришлось выбирать один, я бы сказал C++.Это более кроссплатформенный, чем Obj-C, и менее болезненный, чем C.Но если вы занимаетесь программированием для Mac, вам нужно знать Objective-C.Если вы занимаетесь каким-либо встраиваемым программированием или взломом ядра, вам, вероятно, захочется использовать C.

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

Кроме того, C++ — единственный язык, поддерживаемый MS с точки зрения .NET (конечно, если вы планируете однажды перейти на .NET).

Начните с C, а затем, возможно, расширите свои знания до C++, если вам нужна объектная ориентация.Objective C — это малоизвестная вещь вроде Apple Script, о которой когда-либо слышали только разработчики Apple (если таковые имеются), с этим языком далеко не уедешь (не в обиду поклонникам этого языка).

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

Что касается ответа Лорен Сигал, то, что вы хотите сделать, не имеет значения, когда вы хотите выбирать между C и C++.Это просто вопрос предпочтений.У обоих есть библиотеки для всего (поскольку библиотеки C++ часто представляют собой просто объектно-ориентированные оболочки вокруг библиотек C), у обоих огромное сообщество, стабильные IDE и компиляторы.

Intel вкладывает много средств в библиотеки C++ для работы с их процессорами.Поскольку в последнее время Intel, похоже, доминирует в мире процессоров для ПК, это кажется достойным выбором.

Pure C — это хороший базовый язык, независимо от того, на каком другом языке программирования вы затем сосредоточиваетесь.В частности, Objective-C — это просто базовый код C с присыпанными сверху идеями Smalltalk.Несмотря на то, что C++ отходит далеко от C, по моему мнению, C — самый полезный язык, который нужно знать.В Objective-C вы часто переходите к C.В Ruby, Python, Erlang и бесчисленном множестве других языков вы также часто переходите в режим C.Это также язык, на который вы всегда можете рассчитывать, что сможете использовать его на каждом компьютере, к которому вы прикасаетесь.

Так что я лично считаю, что каждый программист действительно должен знать C.Хоть немного.

Недавно я изучил Objective-C (потому что начал экспериментировать с Cocoa), проработав 10 лет разработчиком C++ или около того.

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

И Objective-C, и C++ добавляют слой объектно-ориентированного программирования поверх C.Но делают они это почти совершенно противоположными способами.Кажется, что каждый раз, когда C++ принимал одно проектное решение, Objective-C делал противоположный выбор.Например, C++ использует статическую типизацию, тогда как Objective-C использует динамическую типизацию.Или (недавний) Objective-C использует сборку мусора, чего нет в C++.

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

Если вы хотите сосредоточиться только на операционной системе Windows, то предлагаю сразу начать с С# (.Net Framework)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top