D
D
Danil Antoshkin2016-05-22 21:46:32
Programming
Danil Antoshkin, 2016-05-22 21:46:32

Does it make sense to start with C?

I want to learn C first, and then switch to other C-like languages.
What are the pros and cons of this approach?

Answer the question

In order to leave comments, you need to log in

13 answer(s)
S
Sergey, 2016-05-22
@TwerTrue

Pros:
C is power. It has no competitors in systems programming yet (except that rust creeps up and D, but they are oriented towards other things a bit).
Cons:
Today C is specific. This is either system programming (development of drivers, low-level things, databases, interpreters, compilers) or microcontrollers, etc. There are also certain tasks for which performance is critical, and assembler is sometimes used there, but they will soon switch to FPGA.
That is, knowledge of C = knowledge of computer architecture, and this is not bad and will come in handy. The language itself is relatively simple and does not take much time to learn.
If you are interested in more mainstream things like web or mobile development, it’s easier to immediately take some modern dynamic language (python, javascript) and enjoy life.

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

Сергей, 2016-05-25
@mr_jumper

На текущий момент Си/Си++ не только промышленный язык, но и хороший язык для обучения. Почему на мой взгляд язык Си знать нужно:
1. Понимание как работать с памятью. Увы, люди, которые ни разу не изучали низкоуровневое программирование похоже не догадываются откуда память берется и куда она девается. Этот язык заставляет всегда помнить о памяти. Не зависимо от того, каким языком в будущем вы будете зарабывать себе на жизнь, эта база будет там. Скрытая, но будет. И лучше понять ее в начале, чем позже набивать шишики.
2. Понимание как работает железо: ЦПУ, сеть, файловые операции и прочее. Именно на таких языках как Си можно увидеть как выглядит многоточное программирование изнутри, что значит "как два байта переслать" да по сети. Все остальное это надстройки над.
3. Развивает внимательноть. Низкоуровневые языки не прощают. Вообще не прощают ничего. Если в некоторых высокоуровневых языках можно просто забить на обявления переменных. Ну упадет и упадет, поиск ошибок это просто. В Си нужно четко представлять, где и что будет записано, на какую память мы ссылаемся. Когда и кем память буедт очищена.
4. Кросплатформенность. Си это один из первых кросплатформенных языков. Именно в этом его сила и заключается. Даже сейчас. Благодаря этому языку JVM работает на многих платформах. Не все так радужно. Но попробовать реализовать что-то что работает под Windows и unix стоит - опять же ради понимания сути вещей.
https://ru.wikipedia.org/wiki/%D0%A1%D0%B8_(%D1%8F...
5. Понимание сути как "это" работает очень важна иначе можно стать специалистом как в шутке "Если программист Делфи не находит компонент, то говорит, что задача не решаемая".
6. Интернет вещей предполагает прогарммирвоание встраевымых устройств. Если вам это интересно, то это один из языков, которые хотелось бы знать.
После 5и лет программирвоания вы поймете, что основы они постоянны, языки смертны... В одной книге вычитал хорошую фразу "Если вы реализовали механизм транзакций на COBOL, после вам все равно на каком языке его писать еще раз".

E
Eugene 222, 2016-05-22
@mik222

А для чего вам нужен C?
Вам необходимо ручное управление памятью?
Вам нужен доступ к железу?
==========
Если да, попробуйте Rust, он поприятнее и поновее.
--------------
Если нет(т.е. у вас концептуальный интерес) возьмите Haskell/Scala/Erlang на выбор.
Там есть ряд концепций которые приятно изучить.
---------------
Если вы считаете, что сможете "развернуть" знания С на другие контексты(т.к. он более низкоуровневый)
то у вас этого не получится. В отличной области происходит оперирование отличными сущностями(кэп).

R
Rou1997, 2016-05-22
@Rou1997

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

Даниил Демидко, 2016-05-23
@Daniro_San

Имеет. Синтаксис C и C++ положен в основу всех Си подобных языков - а это C#, Java, тот же Go отчасти.

A
asd111, 2016-05-23
@asd111

Знать Си и ассемблер в любом случае не будет лишним.

C
cijiw, 2016-06-12
@cijiw

Си в настоящее время имеет очень узкую сферу применения.
Микроконтроллеры да масенькие кусочки нагруженных систем.
При этом он не страхует программиста, не экономит ему время - в отличие от более современных языков.
Из Си-подобных в настоящее время широко применяется С#, Go, начинается Rust.
Даже от С++ стараются отказаться, если это возможно (нет унаследованности или ограничений по квалификации наличиствующих разработчиков).
Си - слишком низкий уровень.
Имхо, его следует учить после более современных реинкарнаций - C#, Go, Rust.

Толстый Лорри, 2016-05-22
@Free_ze

С++ - это почти надмножество Си, потому придется.

B
beduin01, 2016-05-23
@beduin01

Си учить смысла нет. Изучение ассемблера для микроконтроллеров даст вас лучшие понимание архитектуры процессора, чем сам Си.
Потом можно сразу тот же D учить, благо он куда лучше спроектирован и прост в использовании.

A
Alexander, 2016-05-25
@kvothe

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

Дмитрий, 2016-06-08
@Dit81

Если на перспективу работы, то уже не стоит... Лучше Go тогда. Если для себя, то да, можно и изучать. Но паралельно лучше изучать ООП и паттерны проектирования.

P
polifill, 2016-11-07
@polifill

Will C++ be on the list too?
Think a hundred times
1% of the time the power of C++ is used.
99% of the time you struggle with C++
This is what someone who has been designing languages ​​and frameworks and compilers for almost 40 years said.
https://habrahabr.ru/post/314616/
There were no alternatives to C and C++ before. But why now?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question