А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
Re: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, ramar, Вы писали:
R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
Если в связке C + Java/Python/whatever то достаточно.
Re: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, ramar, Вы писали:
R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
Разные области применения.
C — в микроконтроллеры и подобное "встраиваемое".
C++ — всё ж повыше.
Линуксовое ядро — C.
Верхний уровень вроде того же Qt — C++.
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, ramar, Вы писали:
R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
С не нужен.
99% тех, кто на нем пишет — это те что ниасилили С++.
что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
In Zen We Trust
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>С не нужен. A>99% тех, кто на нем пишет — это те что ниасилили С++. A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны. A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
Java не нужен.
99% тех, кто на нем пишет — это те что ниасилили Scala.
что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>С не нужен. A>99% тех, кто на нем пишет — это те что ниасилили С++. A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны. A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
Осилить C++ -пара недель почитывания стандарта. Это написавшие ZFS С++ не осилили?
Вообще С++ это для сотрудников всяких Pupkin Ink. пишущих на С++ по неспособности изучить что-то
сложнее стандарта C++, и думающих, что их жалкие, доморощенные, для пропихивания откатами, поделки,
есть вершины инженерного творчества.
Re[3]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, ramar, Вы писали:
R>Java не нужен.
Java конечно не нужна
R>99% тех, кто на нем пишет — это те что ниасилили Scala.
только C vs C++ не имеет никакого отношения к Java vs Scala.
Java и Scala — это разные языки для одной платформы, как например Delphi, С++ и D, или C# и VB.
А С — это просто урезанный С++, по этому если ты знаешь С, но не знаешь С++,
то для меня это выглядит так, что ты — программист С++, который
— использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
— предпочитает использование небезопасных конструкций языка
— не в состоянии нормально применять ООП и ФП там где это надо
— не может писать нормальные юнит-тесты
— пишет огромное количество бойлерплейта, в коммитах огромные диффы, это тяжело читать/ревьювить
In Zen We Trust
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>99% тех, кто на нем пишет — это те что ниасилили С++.
Не согласен, если человек занимается разработкой устройств или инженерной техникой, не использующей какие-то богатые пользовательские интерфейсы, а использующие простые экраны и кнопочки, то
скорее всего это программист C а не C++. К тому же всякие драйвера для линуксов не пишутся на С++. Плюс и для C есть много современных фреймворков. Так что ваш пост, мягко говоря не очень объективен.
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, ramar, Вы писали:
R>А можно ли быть программистом-системщиком, но знать только С, без С++?
можно
более того, можно и не знать, но утверждать, что ты программист
R>Вообще, насколько важно знать С++ или достаточно только С?
для разработки различных ядер систем и системного ПО, драйверов или программирования микроконтроллеров обычно достаточно
R>Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
дело в сфере применения, а не стране
80% людей оценивают свое мастерство выше среднего...
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>С не нужен. A>99% тех, кто на нем пишет — это те что ниасилили С++. A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны. A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
Скорее C++ не нужен.
С — отличный низкоуровневый язык для написания драйверов, прошивок и критичных к скорости выполнения участков программы, вообщем, там, где нужен маленький размер без кучи ненужных библиотек или скорость.
Например, в программе есть критичный к скорости выполнения или размеру кода участок, можно использовать какую-нибудь стороннюю библиотеку, в которой будет куча лишнего кода для решения конкретной задачи, а можно написать велосипед на C, который будет меньше и работать быстрее.
А высокоуровневые задачи пишутся на высокоуровневом же языках, например, на Java, C# и т.д.
А C++ — это попытка скрестить ужа с ежом, два разных подхода, служащих для решения разных задач.
Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык.
В результате язык потерял в скорости, увеличился размер стандартных библиотек, как следствие — потерял Сишную нишу(драйвера и т.д.).
И как высокоуровневый язык получился кривой, переусложнённый, с кучей подводных камней и т.д., в результате для написания прикладных программ от него сейчас отказываются.
Это всё равно что на Газель поставить двигатель от спорткара, чтобы на ней и грузы можно было возить, и ночью с пацанами погоняться. Лучше уж иметь два отдельных инструмента для решения разных задач(отдельно грузовик и отдельно спорткар).
Единственная ниша C++ — с одной стороны достаточно большие приложения, чтобы их писать целиком на C, с другой стороны, требовательные к скорости выполнения кода(например, геймдев, и то не весь).
Re[3]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, IgorVlasov, Вы писали:
IV>Скорее C++ не нужен. IV>С — отличный низкоуровневый язык для написания драйверов, прошивок и критичных к скорости выполнения участков программы, вообщем, там, где нужен маленький размер без кучи ненужных библиотек или скорость.
маленький размер чего? IV>Например, в программе есть критичный к скорости выполнения или размеру кода участок, можно использовать какую-нибудь стороннюю библиотеку, в которой будет куча лишнего кода для решения конкретной задачи, а можно написать велосипед на C, который будет меньше и работать быстрее.
ну если он меньше, то он может хоть толще?
IV>А C++ — это попытка скрестить ужа с ежом, два разных подхода, служащих для решения разных задач. IV>Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык. IV>В результате язык потерял в скорости, увеличился размер стандартных библиотек, как следствие — потерял Сишную нишу(драйвера и т.д.).
конечно полиморфизм делает код медленнее, особенно статический. IV>И как высокоуровневый язык получился кривой, переусложнённый, с кучей подводных камней и т.д., в результате для написания прикладных программ от него сейчас отказываются.
лямбда выражения опять же придумали всякие непонятные... то ли дело старые добрые указатели на функции. особенно в плане производительности.
эх, коллега, вы не представляете как же приятно пообщаться с экспертом
IV>Единственная ниша C++ — с одной стороны достаточно большие приложения, чтобы их писать целиком на C, с другой стороны, требовательные к скорости выполнения кода(например, геймдев, и то не весь).
эээ что? т.е. ты тоже согласен что С только для hello-world-ов?
In Zen We Trust
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, smeeld, Вы писали:
IV>>Скорее C++ не нужен. S>Плюсую.
ко-ко-ко
IV>>Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык. S>ООП и на С без проблем реализуется. Во ядрах таких ОС как *BSD, Solaris, Linux-ООП ярко выраженный.
и в OpenSSL тоже. вот уж где хороший код
In Zen We Trust
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
Здравствуйте, Abyx, Вы писали:
A>и в OpenSSL тоже. вот уж где хороший код
Если Вы про ту самую уязвимость, то она от языка вообще никак не
зависит, и была бы там, будь openssl на C++ расписан.
А если Вы про пресловутое качество кода, его читаемость, то эти параметры важны
только для профессоров с похмельем, и пишущих их задачки студентов, чтоб двойку не получить.
И эти качества вообще параллельны на международных опенсорсных проектах.
Мне, например, от таких кусков кода ни холодно, ни жарко.
Так и должно быть.
Re[4]: Достаточно ли знать С без знания С++ для устройства н
A>А С — это просто урезанный С++, по этому если ты знаешь С, но не знаешь С++,
Что за ерунду ты пишеш. Языки изначально были несовпадающим множеством, а сейчас еще больше и разошлись в разные стороны.
A>то для меня это выглядит так, что ты — программист С++, который A>- использует минимум возможностей языка и не способен писать выразительный, идиоматичный код
В C99 есть такие возможности которые в C++ и не снились.
A>- предпочитает использование небезопасных конструкций языка
В любом языке есть небезопасные конструкции, даже в той же Java выстрелить себе в ногу гораздо проще и потом часами искать ошибку — Например, можно просто забыть создать экземпляр класса какой нибудь коллекции в конструкторе.
A>- не в состоянии нормально применять ООП и ФП там где это надо
Это известное заблуждение. На самом деле ООП практически не зависит от используемого языка. Нет никаких принципиальных проблем в том, чтобы применять ООП на языке Си.
Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.
A>- не может писать нормальные юнит-тесты
Ну конечно. Идеология юнит тестирования вообще никак не опирается на язык — можно использовать любой. Для тоже Си есть куча библиотек в помощь для организации тестировнаия.
A>- пишет огромное количество бойлерплейта, в коммитах огромные диффы, это тяжело читать/ревьювить
Диф между linux kernel и FreeBSD kernel тоже огромный — его тяжело читать и ревьювить!