LINUX.ORG.RU

Потому что он намного проще.

staseg ★★★★★
()

Потому что в С++ сложно.

ссылка на тип класса
передаче объекта как аргумента параметру

Bad_ptr ★★★★★
()

потому что накчиная с c++ ты так и не поймёшь, как выполняется прогамма. А без этого ты будешь писать неэффективный или даже некорректный код.

mittorn ★★★★★
()

А кто советует то?

Weres ★★★
()

Я обычно советую таким уналоаккам самовыпилиться.

mos ★★☆☆☆
()

Ибо плюсы язык программирования фазы всё_в_язык (предшествующий аналог PL/1 и ALGOL-68)

А Си - язык программирования намеренного ограничения (в K&R в ведении так прямо и сказано что куча о чём авторы имеют представления в программировании не включено в язык а оставлено на откуп библиотекам и сервисам операционной системы)

а вообще если полистать stroustrup.com можно найти что фактически С++ есть С2.0 но по политическим причинам предпочли кодифицировать С в виде С89/ancii без обьектов/шмабьектов и прочей ....

qulinxao ★★☆
()

Ну так дебилы ж. Начинань обучение надо с Паскаля.

anonymous
()
Ответ на: комментарий от peregrine

от кода на c++ до машинного кода достаточно далеко. Людям проще пользоваться каким-то api по документации и не задумываться, как оно работает. В результате что-то может пойти не так.
Вот как раз спор на эту тему
http://cs-mapping.com.ua/forum/showthread.php?t=37608&page=13&pp=20

mittorn ★★★★★
()

Потому что плюсы — это си с классами. Если учить сразу плюсы, эту деталь можно упустить.

anonymous
()

Плюсы позволяют натворить много нежелательных действий на вид простым выражением. Чтобы понимать все последствия и эффективно пользоваться фичами языка нужно знать детали разворачивая всего в конечный код. Си, вместе с assembler'ом, даёт хорошее представление о происходящем на низком уровне и, изучая плюсы сверху, можно просто всего этого не узнать излишне сосредотачиваясь на каких-то высокоуровневых фичах c++.

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

mashina ★★★★★
()

Чтобы понимать как работает код на плюсах и где есть подводные камни.
Я вообще рассматриваю C++ как обертку для C, которая просто облегчает типовые операции. Но смешивать стили программирования С и С++ очень не советую. То есть либо ты пишешь прогамму на С, либо на С++.

Kroz ★★★★★
()

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

m0rph ★★★★★
()
Ответ на: комментарий от m0rph

А новичку всё нужно явно! Поэтому новичков в MIT начинают учить на схеме или питоне, где всё явно.

anonymous
()

С c легко перейти на другой язык, а с плюсов нет.

MKuznetsov ★★★★★
()

Почему они советуют C, а не asm?

Lavos ★★★★★
()
Ответ на: комментарий от mashina

Pure C не учил, начал сразу с плюсов (до этого - Паскаль и Шарп).

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

Uter
()

Действительно, лучше с ML начинать.

hateyoufeel ★★★★★
()

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

annulen ★★★★★
()
Ответ на: комментарий от umren

сам он этому правилу не следовал. так что и нечего советовать.

Iron_Bug ★★★★★
()

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

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от anonymous

на схеме или питоне, где всё явно

а почему не ocaml?

anonymous
()

Не знаю, кто это "советует"...

Для обучения что первый, что второй не подходят, особенно, учитывая, какой там BDSM вместо модульности.

Учить надо на Паскале (современном) или Модуле-2.

hobbit ★★★★★
()

Кто советует?

anonymous
()
Ответ на: Не знаю, кто это "советует"... от hobbit

Учить надо на Паскале (современном)

А чем Паскаль принципиально отличается от С? Я, правда, современных реализаций не видел, последний раз борландовскую среду лет 15 назад запускал. Ну строки там другие(не лучше). Ну писанины больше(begin-end'ы, выражения длиннее, for убогий; опять же, спорные преимущества).

Единственное, что, возможно, полезно в дидактических целях, у борланда была проверка индексов в рантайме, ЕМНИП. Не уверен, что это фича языка, а не реализации. Падения с ней получаются чуть менее загадочные. Что-то еще там есть для неокрепших умов?

JaneDoe
()
Ответ на: комментарий от JaneDoe

Что-то еще там есть для неокрепших умов?

Я же написал: модульность нормальная. В C и C++ очень просто получить undefined reference по десятку причин. Даже программист с опытом может «зависнуть», если ошибка в большом проекте, а уж новичок вообще растеряется.

Ну строки там другие(не лучше).

Кстати, лучше (если сравнивать именно с C, а не C++).

Ещё - синтаксис менее инопланетный, хотя это, конечно, вопрос спорный.

Есть локальные процедуры. В плюсах нечто похожее появилось только в C++11 в виде лямбд, и всё равно аналогия не полная.

Ну и специфика именно «для неокрепших умов» - если в Паскале написать = вместо :=, получишь по рукам сразу. А вот в сишке, если употребить = вместо ==, можно налететь.

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

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от annulen

Потому что у плюсов ниже порог вхождения

Серьезно?

tailgunner ★★★★★
()
Ответ на: комментарий от greenman

Один вот тоже, шерсть на носу, советовал-советовал ассемблер, впаяли ему клоунаду, так больше не советует, в lorе плачется, так ему впаяли…

ya-betmen ★★★★★
()

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

Deleted
()
Ответ на: комментарий от hobbit

Есть локальные процедуры. В плюсах нечто похожее появилось только в C++11 в виде лямбд, и всё равно аналогия не полная.

Лямбды - это сахарок. А обьявить локальный класс(структуру) с оператором operator()(), можно было очень давно (лет 20 точно).

anonymous
()

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

gssomi ★★
()
Ответ на: комментарий от gssomi

Хочу научиться программированию. Не знаю, в какой области буду в будущем прикладывать, поэтому интересует что-то типа «классики». Ну и вроде как C и C++ - это оно.

Norong ★★
() автор топика
Последнее исправление: Norong (всего исправлений: 1)
Ответ на: комментарий от Norong

начни с высшей математики тогда, ибо если ты собираешься кодить на C/C++, то без хорошего знания алгоритмов, функций и умения делать расчёты, там тебе делать нечего, и стоит сразу смотреть веб.

erzentm
()
Ответ на: комментарий от Norong

Ну и вроде как C и C++ - это оно.

Lisp и C - вот классика. Это так, на заметку :-)

anonymous
()
Ответ на: комментарий от asavonic

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

invy ★★★★★
()
Ответ на: комментарий от anonymous

надо уже раст учить, а не эти диалекты древнего человека.

Rust не взлетит, останется навечно маргинальщиной вроде хаскеля.

mashina ★★★★★
()
Ответ на: комментарий от mashina

Взлетит, никуда не денется, надо же когда-нибудь дырки в сетевой инфраструктуре закрывать. А то развели 0-day эксплойтов со своей плюсовой и неплюсовой классикой.

red75prim ★★★
()

А кто советует? [n+1]

В более новых учебных программах действительно нередко первым стоит питон или что-нибудь подобное.

al_exquemelin ★★★
()

На первом этапе будущий программист должен научится двум вещам: алгоритмам, и привыкнуть к тому, что пользователь может делать самые невероятные вещи с программой. Надо учится предусматривать все варианты. Тонкости языка здесь не нужны, поэтому для обучения берётся язык попроще.

Vinni_Pooh ★★★★★
()
Ответ на: комментарий от red75prim

Взлетит, никуда не денется

Взлетит. Пробьет крышу и прямо в черную дыру.

anonymous
()
Ответ на: комментарий от hobbit

модульность нормальная
Есть локальные процедуры

Я бы сказал, это актуально для относительно больших проектов, но не для типичных учебных задач «ввод-расчет-вывод», где пара лишних процедур в глобальном пространстве имен ни на что не влияет, а компиляцию можно запустить как cc *.c

Про строки — да. Вспомнил, встроенный тип, автоматическое управление памятью. Жизнь упрощает сильно. Правда, можно уткнуться в ограничение длины.

если в Паскале написать = вместо :=, получишь по рукам сразу

А вот тут лично у меня проблемы были очень не долго, да и то из-за перехода с Паскаля. Имхо, -Wall -Wextra -Werror должны помочь.

Я бы, все-таки, в качестве начального языка взял структурное подмножество C++(считай, С), но с std::vector и std::string без излишней детализации. Но вижу и недостатки: неадекватный выхлоп компилятора при синтаксических, по сути, ошибках в работе с шаблонами; и ввод-вывод. Что C-style, что C++ сложнее паскалевских.

Кстати, в паскале уже можно реализовать ReadLn средствами языка?

JaneDoe
()
Ответ на: комментарий от umren

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

Только то, что Страуструп набрался наглости, ещё не значит, что он прав.

Bfgeshka ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.