QUOTE (Эдди @ Mar 26 2017, 15:46)

Это — ваши фантазии. На С написано больше полезного софта, чем на любом другом языке. Потому что только С позволяет иметь большую гибкость и кучу удобств!
Именно! Шарп - это вообще какая-то местечковая поделка M$. Захотелось иметь свою жабу, вот и родили. А цэ-крест-крест - уже в самом названии - язык, на котором даже автор поставил аж два креста! Ну, что там можно от него ожидать?! Одни понты: какие-то, дескать, типы, определяемые пользователем - это зачем? чтобы запутать? Перегрузка операторов - зачем? Опять чтобы запутать. Как будто без этого у программиста проблем нет. А шаблоны - эт ваще песня! Многословный мутный синтаксис, по которому компилятор должен что-то родить. Нередко там оно такого нарожает, что мама-не горюй! Тонны дублирующегося кода. А потом удивляются, что процы на гигагерцах и гигабаты памяти, а проги всё равно тормозят и не лезут.
А этот самый полиморфизм! Написать код, который не ясно, что
конкретно делает, а ясно только на рантайме. А там уже поздно выяснять. И зачем это? Опять чтобы запутать. Если кто в этом что-то и может делать, то только автор. В общем, write-only язык.
Отдельно хочется отметить так называемые виртуальные функции! Это что за название? Что обычно называют виртуальным? Что-то такое, что как бы является похожим. Т.е "виртуальные функции" - это "как бы функции", т.е. не настоящие, а выдающие себя за них. Так понимать? И так там во всём. Костыли на костылях.
Но и С - это тоже полумеры! С - есть попытка сделать портабельный макроассемблер, и вся его мощь в том, что программист может управлять ресурсами на низком уровне. И если раньше этот подход (портабельный макросассемблер) был ещё как-то оправдан, то сегодня это уже анахронизм - компания ARM решила эту проблему - изобрела унифицированную ISA, и теперь без разницы, какой проц - надо микроконтроллер или апликушный процессор,
ассемблер тот же самый. Т.е. без разницы, Cortex-M или Cortex-A, команды пишем те же самые. Скажете: "А как же другие процы, которые не ARM?". Так они все
обречены на вымирание, нет смысла тратить на них время.
Надо учить ассемблер ARM, это решает все проблемы без гемора, вносимого так называемыми "языками высокага уровня".
Возвращаясь к С - и этот тоже туда же (в смысле, больше проблем от него, чем пользы). Например, если надо обратиться по конкретному адресу, это требует явного преобразования типов через мерзкий, ломающий мозг синтаксис типа (*(int *)ptr). А у ж разместить переменную по конкретному адресу вообще средствами языка невозможно - начинают тянуться всякие расширения, которые у разных вендоров все разные, а у некоторых отсутствуют. Ну, и где эта хвалёная переносимость?
А пресловутая "адресная арифметика"?! Это нескончаемый источник труднообнаруживаемых ошибок. Недаром серьёзные фирмы, выпускающие ответственные изделия (автомобильная электроника), осознав эту проблему, разработали отдельный стандарт для безопасности - MISRA, где вся эта возня с указателями и адресной арифметикой просто запрещена!
Другое дело ассемблер: доступны абсолютно все средства используемой целевой платформы, без всякого гемора оптимальнейшим образом достигаем любой цели. Например, попробуйте на С написать такое:
CODE
mrc p15, 0, r0, c1, c0, 0 /* read CP15 register 1 */
bic r0, r0, #0x1 /* clear bit 0 */
mcr p15, 0, r0, c1, c0, 0 /* write value back */
А уж про синтаксические правила и говорить нечего. Ведь это же надо придумать конструкции вроде такой:
int (*(af[]))(int);
Ведь тут без бутылки не разберёшься. Нет, чтоб читать выражение слева-направо, тут надо расшифровывать по специальным правилам, а всего-то массив указателей на функции. Конечно, человек ко всему привыкает, но новичкам это срывает крышу. Да даже с простым вопросом, где идеологически правильно ставить звёздочку, и то не ясно:
int* ptr;
или
int *ptr;
Я вот думал поначалу (и довольно долго), что первый вариант - дескать, int* - это тип указателя. Хотя даже тогда не покидало чувство, что что-то тут не так - почему для объектов звезда применяется слева, а для типов справа. А потом узнал, что правильно - второй вариант. И трактуется это так: "ptr - это такой тип, при разыменовании которого, получается int".
Т.е. по сути типа указатель в языке вообще нет! Есть неявный тип, при разыменовании которого получается уже настоящий тип. Это ж какая извращённая логика в этом заложена! Отсюда и этот ужасный синтаксис выше - про массив указателей на функции.
Т.ч. не, не говорите, что С хороший язык. Попытка сделать портабельный макроассемблер - да. Имела право на жизнь? Да. Нужна ли сейчас? Нет!
Учите ISA от ARM, и будет вам счастье.
QUOTE (Эдди @ Mar 26 2017, 15:46)

На нем вообще ничего нельзя писать, как и на пхытоне.
Я даже больше скажу: Python - вообще не язык программирования. Серьёзно. Сам бы удивлён, когда узнал. Т.ч. его и рассматривать как ЯП не стоит.
QUOTE (Эдди @ Mar 26 2017, 15:46)

Тоже чушь! Начать с отступов вместо скобок, спагетти-кода и вообще полной алогичности самого языка! Нет, на пхытоне работать — себя не уважать! Единственное, что удобно в пхытоне — количество кода в разы меньше, чем на С. Но, естественно, только под узкий круг задач: микроконтроллеры на пхытоне не попрограммируешь, и операционку на нем не напишешь. Ибо убог.
Да, какой-то голландский (кстати, это может не случайно) мужык по имени Гуидо решил, что мне удобно везде использовать одинаковый отступ для выделения блока, а я вот, может, люблю каждую строчку индивидуально отодвинуть от края. И потом - подумать только - ведь каждый объект - это выделение памяти в куче (malloc, сиречь). Это ж какой тормоз-то получается! Ну подумаешь, динамическая типизация - зачем она? Только запутывает! Никогда не знаешь, какого типа объект.
И вообще
типы - зло. Какая-то лишняя сущность. Вон на ассемблере нет никаких типов, всё просто и прозрачно - все данные либо в регистрах, либо по конкретным адресам памяти. Ничего не сокрыто, никакой мути - всё честно перед глазами программиста. В наше время унификации ассемблера, когда, повторяю, хоть для МК, хоть для толстого проца можно писать на одном и том же языке ассемблера, просто глупо вастить время на изучение этих "высокоуровневых" костылей.