Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   C и С++ В чём разница? (https://javascript.ru/forum/offtopic/4718-c-i-s-v-chjom-raznica.html)

JSprog 16.08.2009 12:38

C и С++ В чём разница?
 
Не разу не сталкивался с этими языками. Подскажите пожалуйста в чём разница между ними? И что лучше начинать учить. Похожи ли они? (или просто названия схожи как например java и javascript). Может быть у них совсем разные области применения и сравнивать их не корректно?

Gvozd 16.08.2009 12:51

C++ является продуктом эволюции C
C - процедурный язык
C++ - объектно-ориентированныый
http://ru.wikipedia.org/wiki/Си_(....D1.81_C.2B.2B
http://ru.wikipedia.org/wiki/С%2B%2...1_.D0.A1.D0.B8
http://ru.wikipedia.org/wiki/С%2B%2...F_.D0.A1.D0.B8

JSprog 16.08.2009 12:56

Тогда буду учить С++ с ОПП я знаком из JavaScript и PHP

Gvozd 16.08.2009 13:34

Цитата:

Сообщение от JSprog
с ОПП я знаком из JavaScript и PHP

да не
не знакомы вы еще с ООП во всем его многообразии)))
ООП в C++ гораздо богаче чем в этих двух языках
но PHP постоянно пытается наверстать это

JSprog 16.08.2009 14:04

А что тогда за С#

Riim 16.08.2009 14:29

Цитата:

Сообщение от JSprog
А что тогда за С#

продукт эволюции C++

Gvozd 16.08.2009 14:30

неужели так трудно?
вкратце, он не является наследником C/C++, и является разработкой мелкомягких
связь с C примерно такая же как у Java с JavaScript

Gvozd 16.08.2009 14:31

Цитата:

Сообщение от Riim
продукт эволюции C++

ду ну?
может быть тогда и Java продукт эволюции C++?)

Riim 16.08.2009 14:38

Цитата:

Сообщение от Gvozd
ду ну?

многие с этим согласны.

Цитата:

Сообщение от Gvozd
может быть тогда и Java продукт эволюции C++?)

есть те, кто и с этим согласятся.

Gvozd 16.08.2009 14:43

Цитата:

Сообщение от Riim
есть те, кто и с этим согласятся.

ну, в принципе тут тема для небольшолго холиварчика)))
а истина как всегда где-то посередине

Андрей Параничев 16.08.2009 15:38

Не начинайте учить С++ — зря потратите время.

JSprog 16.08.2009 15:41

Почему? мне к институту готовиться надо. Если вы придёте и объясните преподу что С++ эт пустая трата времени то ОК

Octane 16.08.2009 15:48

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

Андрей Параничев 16.08.2009 15:53

JSprog,
Тогда другое дело, но мне кажется, что для решения задач в институте будет достаточно знания основ программирования.

Riim 16.08.2009 16:09

Цитата:

Сообщение от Андрей Параничев
Не начинайте учить С++ — зря потратите время.

Почему? Что тогда учить?

Андрей Параничев 16.08.2009 17:28

Riim,
Не хочу холиварить, но если именно изучать программирование, то лучше смотреть в сторону Haskell/Lisp для функциональных языков, и в сторону Java/C# для объектно-ориентированных.

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

Riim 16.08.2009 18:17

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

JSprog 16.08.2009 18:41

Ну говорят java и c++ очень похожи

JSprog 16.08.2009 18:56

http://pascalabc.net/ как вам это?

Kolyaj 17.08.2009 11:54

Цитата:

Сообщение от Андрей Параничев
но если именно изучать программирование, то лучше смотреть в сторону Haskell/Lisp для функциональных языков, и в сторону Java/C# для объектно-ориентированных.

Если именно изучать программирование, а не выучить какой-нибудь язык и стать очередным быдлокодером, то только с C/C++.
Хорошая статья Спольски на эту тему http://local.joelonsoftware.com/wiki...%BD%D0%B0_Java

Riim 17.08.2009 13:38

Цитата:

Сообщение от Kolyaj
то только с C/C++.

Я часто слышу об ошибках в проектировании языка.
Цитата:

Сообщение от Kolyaj
Если именно изучать программирование

Возможно, изучать C/C++ стоит для того, что бы понять эти ошибки и знать как плохо?

Kolyaj 17.08.2009 13:43

Цитата:

Сообщение от Riim
Я часто слышу об ошибках в проектировании языка.

Я щас не говорю о промышленном применении языка, с этими вопросами не ко мне. Я говорю про изучение основ программирования.

Riim 17.08.2009 14:19

Цитата:

Сообщение от Kolyaj
Хорошая статья Спольски на эту тему

Прочитал, довольно интересная точка зрения.

Kolyaj 17.08.2009 14:32

Цитата:

Сообщение от Riim
довольно интересная точка зрения.

Если учесть, что все большее количество программистов не знают разницу между оператором << и умножением на степень двойки, то очень даже обоснованная.

Dmitry A. Soshnikov 17.08.2009 14:47

Цитата:

Сообщение от Kolyaj
Если именно изучать программирование, а не выучить какой-нибудь язык и стать очередным быдлокодером, то только с C/C++.
Хорошая статья Спольски на эту тему

Да, С/С++ знать желательно, и мнение автора статьи тоже с одной стороны понять можно. С другой стороны, как он сам пишет:

Цитата:

Неужели я всего лишь один из тех старомодных ворчунов, вроде Четырёх Йоркширцев, которые хвастаются тем, как тяжело было жить в суровые старые времена?
Да, тоже возможно. Как правило, когда усиливается уровень абстракции, у людей, которые застали предыдущий уровень, начинается подобный эффект. И в лучшем случае, можно призвать мыслить на обоих уровнях абстракции - на новом и на старом (на котором "было тяжело жить в старые времена"). Но. Всё дело в том, что ниже своего первоначального уровня, они тоже не опускаются. Пусть пишет хотя бы про ассемблер тогда, не говоря уже о bin и hex-кодах. Пусть пишет, что надо подключать кабели и программировать так. Это нормальная закономерность. С/С++ - это сверхвысокие, высоко абстрагированные языки (относительно, конечно). Питонисты и Рубисты, уже могут называть Си - низкоуровневым языком. Всё движется. Через несколько лет (может, десятков), будет вообще всё по-другому. Будет такое же нытье про "вот вы, лодари, мы учили когда-то Ruby, а вы...".

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

Цитата:

Сообщение от Kolyaj
Я говорю про изучение основ программирования

Ага, не забывай дописывать - (сверх)выскоуровневых основ.

Riim 17.08.2009 14:57

Цитата:

Сообщение от Kolyaj
все большее количество программистов не знают разницу между оператором << и умножением на степень двойки

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

Андрей Параничев 17.08.2009 20:01

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

Как я уже писал в какой-то теме на форуме, я искренне считаю, что изучение программирования на примерах Паскаля и С++ (С#, Java) — глупость. И совсем не потому, что это промышленные платформы, просто потому что обучение на этих языках идет "от начала до конца", в них очень высокий порог вхождения. Гораздо выше, чем в скриптовые языки. И я считаю, что обучать программированию лучше на простых скриптовых языках, уходя "вглубь" и спускаясь "вниз", к тому, как это работает на низком уровне. И отдельно показывать особенности объектно-ориентированных и функциональных языков.

Цитата:

Сообщение от Kolyaj
Если именно изучать программирование, а не выучить какой-нибудь язык и стать очередным быдлокодером, то только с C/C++.

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

Эта тема вообще не про то, "с чего начинать учить программирование", но если человек уже знаком с программированием, то изучать С++, имхо, становятся просто бессмысленно. Учить, чтоб работать? В .NET доминирует C#, а не C++. Учить, чтоб понимать? Для этого совершенно необязательно учить именно C++, да и вообще понять можно и без привязки к языку.

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

JSprog 18.08.2009 07:20

Умножение на степень двойки это перевести число в двоичную систему? или умножение на 2 в какой то степени?


Часовой пояс GMT +3, время: 12:35.