TwerTrue
@TwerTrue
Молодой и неопытный разработчик

Имеет ли смысл начинать с Си?

Хочу сначала изучить CИ, а потом уже переходить на другие СИ-подобные языки
Какие плюсы и минусы у такого подхода ?
  • Вопрос задан
  • 12249 просмотров
Решения вопроса 3
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Плюсы:

Си это сила. У него пока нет конкурентов в системном программировании (разве что rust подкрадывается и D, но они чуть на другие вещи ориентированы).

Минусы:

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

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

Если же вас интересуют более мэйнстрим вещи вроде web или мобильная разработка - проще сразу брать какой-нибудь современный динамический язык (python, javascript) и радоваться жизни.
Ответ написан
@spotifi
Изучать следует начинать с языка со статической типизаций.

В частости С подходит по этому критерию.
Плюс в изучении С - много литературы и пр. информации.
Минусы - будете не только язык изучать, а еще и со стандартами и их разной кривости реализациями бороться. То, что работает в реализации Clang на Linux не будет работать в реализации MSVC на Windows и в реализации GCC на FreeBSD. Оно вам надо?
Плюс в С легко отстрелить себе ногу.
Плюс реальная польза от Си - это только в слабых микроконтроллерах (мощные модели вполне способны и целые операционные системы запуска), да в написании операционных систем. В других областях или давно перешли или переходят на другие языки.

Я бы предложил Go.

Статическая типизация.
Мощь и простота в одном флаконе.
Жесткий стандарт - разные версии на разных ОС комилируются запросто.

Скриптовые динамические языки - PHP, JavaScript, Python, Ruby, Perl, Lua - плохо для начинающего. Прививает нехорошее отношение к переменным.

Rust, D, Java, Dart - слишком много концепций, не будете знать на чем сосредоточить внимание.

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

После 5и лет программирвоания вы поймете, что основы они постоянны, языки смертны... В одной книге вычитал хорошую фразу "Если вы реализовали механизм транзакций на COBOL, после вам все равно на каком языке его писать еще раз".
Ответ написан
@asd111
Знать Си и ассемблер в любом случае не будет лишним.
Ответ написан
Комментировать
@kvothe
На мой взгляд изучать Си смысл есть. Указатели, ручное выделение памятью и т.д. - это ведёт к понимаю как работают программы, компьютер. Начать - тоже смысл есть, но, скорей всего, если есть достаточно времени.

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

При этом он не страхует программиста, не экономит ему время - в отличие от более современных языков.
Из Си-подобных в настоящее время широко применяется С#, Go, начинается Rust.

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

Си - слишком низкий уровень.
Имхо, его следует учить после более современных реинкарнаций - C#, Go, Rust.
Ответ написан
@mik222
А для чего вам нужен C?
Вам необходимо ручное управление памятью?
Вам нужен доступ к железу?
==========
Если да, попробуйте Rust, он поприятнее и поновее.
--------------
Если нет(т.е. у вас концептуальный интерес) возьмите Haskell/Scala/Erlang на выбор.
Там есть ряд концепций которые приятно изучить.
---------------
Если вы считаете, что сможете "развернуть" знания С на другие контексты(т.к. он более низкоуровневый)
то у вас этого не получится. В отличной области происходит оперирование отличными сущностями(кэп).
Ответ написан
Rou1997
@Rou1997
СИ - это Свидетели Иеговы, а язык называется Си, C или "С".
Судя по вашему предыдущему вопросу про Swift и Objective-C, вы уже имеете какой-то опыт программирования, а теперь вдруг спрашиваете про "начинать", странно.
Продолжайте изучать то, что изучаете, а по необходимости или по желанию изучайте низкий уровень.
Ответ написан
@Free_ze
Пишу комментарии в комментарии, а не в ответы
С++ - это почти надмножество Си, потому придется.
Ответ написан
Комментировать
Daniro_San
@Daniro_San
Программист
Имеет. Синтаксис C и C++ положен в основу всех Си подобных языков - а это C#, Java, тот же Go отчасти.
Ответ написан
Комментировать
@beduin01
Си учить смысла нет. Изучение ассемблера для микроконтроллеров даст вас лучшие понимание архитектуры процессора, чем сам Си.
Потом можно сразу тот же D учить, благо он куда лучше спроектирован и прост в использовании.
Ответ написан
Dit81
@Dit81
Security researcher, pentester, internet-marketer
Если на перспективу работы, то уже не стоит... Лучше Go тогда. Если для себя, то да, можно и изучать. Но паралельно лучше изучать ООП и паттерны проектирования.
Ответ написан
Комментировать
@polifill
C++ тоже будет в списке?

Подумай сто раз.

1% времени мощь С++ используется.
99% процентов времени ты с С++ борешься

Это сказал человек, разрабатывающий языки и среды и компиляторы уже почти 40 лет.
https://habrahabr.ru/post/314616/

Раньше С и С++ не было альтернатив. Но сейчас то зачем?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы