Достаточно ли знать С без знания С++ для устройства на работу?
От: ramar Марс  
Дата: 04.09.14 08:08
Оценка:
А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.
Re: Достаточно ли знать С без знания С++ для устройства на работу?
От: Miroff Россия  
Дата: 04.09.14 08:24
Оценка:
Здравствуйте, ramar, Вы писали:

R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.


Если в связке C + Java/Python/whatever то достаточно.
Re: Достаточно ли знать С без знания С++ для устройства на работу?
От: Dair Россия  
Дата: 04.09.14 08:24
Оценка: +1
Здравствуйте, ramar, Вы писали:

R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.


Разные области применения.
C — в микроконтроллеры и подобное "встраиваемое".
C++ — всё ж повыше.

Линуксовое ядро — C.
Верхний уровень вроде того же Qt — C++.
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
От: ramar Марс  
Дата: 04.09.14 08:30
Оценка:
Здравствуйте, Miroff, Вы писали:


M>Если в связке C + Java/Python/whatever то достаточно.


Да, в связке.
Re: Достаточно ли знать С без знания С++ для устройства на работу?
От: Abyx Россия  
Дата: 04.09.14 08:45
Оценка: +5 :))) :))) :)))
Здравствуйте, ramar, Вы писали:

R>А можно ли быть программистом-системщиком, но знать только С, без С++? Вообще, насколько важно знать С++ или достаточно только С? Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.


С не нужен.
99% тех, кто на нем пишет — это те что ниасилили С++.
что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
In Zen We Trust
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
От: ramar Марс  
Дата: 04.09.14 08:52
Оценка: 1 (1) :))) :))
Здравствуйте, Abyx, Вы писали:

A>С не нужен.

A>99% тех, кто на нем пишет — это те что ниасилили С++.
A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.

Java не нужен.
99% тех, кто на нем пишет — это те что ниасилили Scala.
что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
От: smeeld  
Дата: 04.09.14 09:00
Оценка: :))) :))) :))) :)
Здравствуйте, Abyx, Вы писали:

A>С не нужен.

A>99% тех, кто на нем пишет — это те что ниасилили С++.
A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.

Осилить C++ -пара недель почитывания стандарта. Это написавшие ZFS С++ не осилили?
Вообще С++ это для сотрудников всяких Pupkin Ink. пишущих на С++ по неспособности изучить что-то
сложнее стандарта C++, и думающих, что их жалкие, доморощенные, для пропихивания откатами, поделки,
есть вершины инженерного творчества.
Re[3]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Abyx Россия  
Дата: 04.09.14 09:10
Оценка: +6
Здравствуйте, 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]: Достаточно ли знать С без знания С++ для устройства на работу?
От: -n1l-  
Дата: 04.09.14 09:17
Оценка: +1 :)))
Здравствуйте, Abyx, Вы писали:

A>99% тех, кто на нем пишет — это те что ниасилили С++.


Не согласен, если человек занимается разработкой устройств или инженерной техникой, не использующей какие-то богатые пользовательские интерфейсы, а использующие простые экраны и кнопочки, то
скорее всего это программист C а не C++. К тому же всякие драйвера для линуксов не пишутся на С++. Плюс и для C есть много современных фреймворков. Так что ваш пост, мягко говоря не очень объективен.
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Няшка Россия  
Дата: 04.09.14 09:20
Оценка: +1 :)
Здравствуйте, Abyx, Вы писали:

A>А С — это просто урезанный С++


facepalm
80% людей оценивают свое мастерство выше среднего...
Re: Достаточно ли знать С без знания С++ для устройства на работу?
От: Няшка Россия  
Дата: 04.09.14 09:27
Оценка:
Здравствуйте, ramar, Вы писали:

R>А можно ли быть программистом-системщиком, но знать только С, без С++?

можно
более того, можно и не знать, но утверждать, что ты программист

R>Вообще, насколько важно знать С++ или достаточно только С?

для разработки различных ядер систем и системного ПО, драйверов или программирования микроконтроллеров обычно достаточно

R>Не только в России, но за бугром тоже. В Америке, я знаю, именно С больше в почете.

дело в сфере применения, а не стране
80% людей оценивают свое мастерство выше среднего...
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Mr.Delphist  
Дата: 04.09.14 09:35
Оценка:
Здравствуйте, Abyx, Вы писали:

A>А С — это просто урезанный С++


Май твиттер ваз хакд? Вы ещё скажите, что C полностью совместим по синтаксису с C++.
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Abyx Россия  
Дата: 04.09.14 09:56
Оценка:
Здравствуйте, Mr.Delphist, Вы писали:

A>>А С — это просто урезанный С++


MD>Вы ещё скажите, что C полностью совместим по синтаксису с C++.


нет, конечно они не совместимы на все 100%.
в С есть еще есть опасные вещи типа неявного каста void* в любой тип.
In Zen We Trust
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
От: BulatZiganshin  
Дата: 04.09.14 10:14
Оценка: +2 :))) :))
Здравствуйте, Abyx, Вы писали:

A>99% тех, кто на нем пишет — это те что ниасилили С++.


а среди пишущих на C++ таких 100%
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Достаточно ли знать С без знания С++ для устройства на работу?
От: IgorVlasov  
Дата: 04.09.14 10:25
Оценка: 1 (1) +4 -4 :))) :)
Здравствуйте, Abyx, Вы писали:

A>С не нужен.

A>99% тех, кто на нем пишет — это те что ниасилили С++.
A>что какбэ намекает на то, что люди не способные осилить язык никому не нужны.
A>тем более что есть строгая корреляция между знанием языка и знанием различных технологий и практик программирования.

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

А C++ — это попытка скрестить ужа с ежом, два разных подхода, служащих для решения разных задач.
Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык.
В результате язык потерял в скорости, увеличился размер стандартных библиотек, как следствие — потерял Сишную нишу(драйвера и т.д.).
И как высокоуровневый язык получился кривой, переусложнённый, с кучей подводных камней и т.д., в результате для написания прикладных программ от него сейчас отказываются.
Это всё равно что на Газель поставить двигатель от спорткара, чтобы на ней и грузы можно было возить, и ночью с пацанами погоняться. Лучше уж иметь два отдельных инструмента для решения разных задач(отдельно грузовик и отдельно спорткар).

Единственная ниша C++ — с одной стороны достаточно большие приложения, чтобы их писать целиком на C, с другой стороны, требовательные к скорости выполнения кода(например, геймдев, и то не весь).
Re[3]: Достаточно ли знать С без знания С++ для устройства на работу?
От: smeeld  
Дата: 04.09.14 11:00
Оценка: :))
Здравствуйте, IgorVlasov, Вы писали:


IV>Скорее C++ не нужен.


Плюсую.

IV>Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык.


ООП и на С без проблем реализуется. Во ядрах таких ОС как *BSD, Solaris, Linux-ООП ярко выраженный.
Re[3]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Abyx Россия  
Дата: 04.09.14 11:19
Оценка: +5
Здравствуйте, IgorVlasov, Вы писали:

IV>Скорее C++ не нужен.

IV>С — отличный низкоуровневый язык для написания драйверов, прошивок и критичных к скорости выполнения участков программы, вообщем, там, где нужен маленький размер без кучи ненужных библиотек или скорость.
маленький размер чего?
IV>Например, в программе есть критичный к скорости выполнения или размеру кода участок, можно использовать какую-нибудь стороннюю библиотеку, в которой будет куча лишнего кода для решения конкретной задачи, а можно написать велосипед на C, который будет меньше и работать быстрее.
ну если он меньше, то он может хоть толще?

IV>А C++ — это попытка скрестить ужа с ежом, два разных подхода, служащих для решения разных задач.

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

IV>Единственная ниша C++ — с одной стороны достаточно большие приложения, чтобы их писать целиком на C, с другой стороны, требовательные к скорости выполнения кода(например, геймдев, и то не весь).

эээ что? т.е. ты тоже согласен что С только для hello-world-ов?
In Zen We Trust
Re[4]: Достаточно ли знать С без знания С++ для устройства на работу?
От: Abyx Россия  
Дата: 04.09.14 11:20
Оценка: +1
Здравствуйте, smeeld, Вы писали:

IV>>Скорее C++ не нужен.

S>Плюсую.
ко-ко-ко

IV>>Взяли C и прикрутили к нему сбоку ООП, типа это теперь высокоуровневый язык.

S>ООП и на С без проблем реализуется. Во ядрах таких ОС как *BSD, Solaris, Linux-ООП ярко выраженный.
и в OpenSSL тоже. вот уж где хороший код
In Zen We Trust
Re[5]: Достаточно ли знать С без знания С++ для устройства на работу?
От: smeeld  
Дата: 04.09.14 11:37
Оценка: -6 :)))
Здравствуйте, Abyx, Вы писали:

A>и в OpenSSL тоже. вот уж где хороший код


Если Вы про ту самую уязвимость, то она от языка вообще никак не
зависит, и была бы там, будь openssl на C++ расписан.
А если Вы про пресловутое качество кода, его читаемость, то эти параметры важны
только для профессоров с похмельем, и пишущих их задачки студентов, чтоб двойку не получить.
И эти качества вообще параллельны на международных опенсорсных проектах.
Мне, например, от таких кусков кода ни холодно, ни жарко.
Так и должно быть.
Re[4]: Достаточно ли знать С без знания С++ для устройства н
От: eskimo82  
Дата: 04.09.14 23:21
Оценка: :)))
A>А С — это просто урезанный С++, по этому если ты знаешь С, но не знаешь С++,
Что за ерунду ты пишеш. Языки изначально были несовпадающим множеством, а сейчас еще больше и разошлись в разные стороны.

A>то для меня это выглядит так, что ты — программист С++, который

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

A>- предпочитает использование небезопасных конструкций языка

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

A>- не в состоянии нормально применять ООП и ФП там где это надо

Это известное заблуждение. На самом деле ООП практически не зависит от используемого языка. Нет никаких принципиальных проблем в том, чтобы применять ООП на языке Си.
Элементы обобщенного програмирования в Си тоже можно неплохо применять, а частности — первые наброски Степановом того, что сейчас называется STL были сделаны на Си, довольно оригинальным способом.

A>- не может писать нормальные юнит-тесты

Ну конечно. Идеология юнит тестирования вообще никак не опирается на язык — можно использовать любой. Для тоже Си есть куча библиотек в помощь для организации тестировнаия.

A>- пишет огромное количество бойлерплейта, в коммитах огромные диффы, это тяжело читать/ревьювить

Диф между linux kernel и FreeBSD kernel тоже огромный — его тяжело читать и ревьювить!
Отредактировано 04.09.2014 23:27 eskimo82 . Предыдущая версия . Еще …
Отредактировано 04.09.2014 23:25 eskimo82 . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.