Майкл Форни (Michael Forney), разработчик композитного сервера swc на базе протокола Wayland, развивает новый компилятор cproc, поддерживающий стандарт C11 и некоторые расширения GNU. Для генерации оптимизированных исполняемых файлов в компиляторе в качестве бэкенда применяется проект QBE. Код компилятора написан на языке Си и распространяется под свободной лицензией ISC...Подробнее: https://www.opennet.ru/opennews/art.shtml?num=55668
Круто
Бессмысленно. Си используют, в частности, чтобы писать реалтайм и мультипроцесс, а тут без volatile никак. Что касается PIC, то для вышеупомянутого типа приложений совместно используемый код не нужен -- статическая линковка гораздо проще и, главное, эффективнее.
Какой же ты умный!
Держи вендузятника неумеющего динамическую линковку.
Динамическая линковка -- зло.
Это статическая зло, когда диск забит копиями одного и тоого же кода, и когда выходит исправление в низкоуровневой зависимости ВЕСЬ этот код нужно пересобрать и/или перескачать. На самом деле от статических библиотек уже повально отказываются.
> Это статическая зло, когда диск забит копиями одного и тоого же кода,
> и когда выходит исправление в низкоуровневой зависимости ВЕСЬ этот код нужно
> пересобрать и/или перескачать. На самом деле от статических библиотек уже повально
> отказываются.Если у тебя один бинарник -- у тебя нет копий одного и того же кода. Л - логика.
Не неси херни. "Один и тот же код" будет прямо в бинарнике и его нужно будет перескачать вместе с кодом самой аппки (который всё в том же бинарнике). Если аппка уже не поддерживается или её автор пошёл попить чайку, то всё это время ты не сможешь обновить уязвимый код и будешь сидеть как страус с головой в песке, надеясь, что к жопе никто не дотронется.
> Не неси херни. "Один и тот же код" будет прямо в бинарникеНе один и тот же. И уж как минимум -- мегабайты всякого вспомогательного мусора в бинарник включены не буду.
> и его нужно будет перескачать вместе с кодом самой аппки (который
> всё в том же бинарнике).Это для тебя проблема? Купи нормальный интернет, замкадыш.
> Если аппка уже не поддерживается или
> её автор пошёл попить чайку, то всё это время ты не
> сможешь обновить уязвимый код и будешь сидеть как страус с головой
> в песке, надеясь, что к жопе никто не дотронется.Если аппку бросил хозяин -- что ты обновил динамическую библиотеку, что не обновил -- это уже не поможет.
Пишешь, плохо понимая суть проблемы.
>На самом деле от статических библиотек уже повально отказываются.Вместо них запихивают разделяемые в самодостаточные пакеты.
мы уже кодим на расте
Чего кодите?
Firefox и сайтики кодит Mozilla
На дасте?
Товарищи эксперты, а подскажите, имеет ли смысл учить С, если ранее его не знал, имеется ввиду с перспективой хотя бы на лет 5-10?
Определенно стоит, эта технология с нам надолго, не смотря на появление более продвинутых языков, знание Си позволит вам стать более продвинутым специалистом
"несмотря" по-русски пишется вместе.
Вы правы, только ваше малозначительное превосходство в технических сообществах ценится еще меньше.
И правильно было тогда уж сказать: "несмотря на" пишется слитно, а не просто "не смотря".
Так что "несмотря на" вроде бы правильное замечание, у данного "грамотея", пишущего слова "не смотря" на их смысл, с русским у самого не очень.
Я таки как минимум еще одну запятую пропустил, о горе мне!
Ты пропустил саму суть!
Как же я не догадался тебя то спросить!
Это единственная ошибка в комментах? Если уж исправлять, то каждый, а потом во всём интернете. Не люблю незаконченных решений :)
Вместе в кино ходят, а слова пишется слитно.
Некоторые и в кино ходят слитно :)
Сразу видно может и очень "продвинутого", но и очень "узкого" советчика, оценивающего специалистов только по степени ограниченности кругозора.Есть много "древнейших" профессий и технологий, но это не значит, что надо все бросать и их "учить", только потому, что они "надолго".
И насчет "продвинутости", Си не вовсе не настолько "продвинутый", сколько скорее "оптимальный". Продвинутым он был только во времена доминирования ассемблеров.
Определенно не стОит с него начинать, если ваша цель именно информатика, а не микропроцессорные системы (я сам, не считая школьного Паскаля начинал параллельно с C и C++, но я и "системы" учит от и до, насколько мог, и именно как начинавший с этого, говорю, что сейчас есть лучше варианты для "начала"). Без погружения в системное программирование - не стОит вообще, если цель изучения лишь абстракции без аппаратуры, что сейчас вполне самодостаточно, и изменится в будущем.
***fix: Си вовсе не настолько
Все зависит от ваших целей.
Если цель - просто зарабатывать деньги, конечно, можно, например, изучить PHP с Джаваскриптом, не имея никакого представления об их внутреннем устройстве, и найти хорошую работу.
А если цель в саморазвитии, это уже другой вопрос.
Тут, на мой взгляд, есть две важные концепции, способность понять которые отличает программиста (как инженера) от кодера (как рабочего после ПТУ). Первая - из С, указатели, вторая - из функционального программирования, функции высшего порядка (тут где-то рядом и указатели на функции). По моему опыту, человек, который легко в своей голове оперирует этими концепциями, способен изучить любой язык и любую платформу в кратчайшие сроки и писать куда более качественный код, чем узкоспециализированный кодер.
> Первая - из С, указатели, вторая - из функционального программирования, функции высшего порядка (тут где-то рядом и указатели на функции)И обе — тривиальнейшие вещи, которые можно на пальцах объяснить двенадцатилетнему ребёнку. Куда сложнее объяснить, откуда берётся столько пафоса у тех, кто смог эту тривиальщину понять, и какая связь между умением программировать компьютер — навыком чуть сложнее базовой грамотности — и саморазмитием. Не расскажешь? По своему опыту, конечно.
Двенадцатилетнему ребёнку можно, а вот у senior php программистов возникают проблемы с пониманием. Сам удивляюсь.
плюсую. никогда не понимал почему многие это называют гранью просвященности
скажем так: на микроконтроллеры и встраиваемый линукс всегда будет спрос, а там ценят си и ассемблер, поэтому стоит, но надо знать в какую область переться
Ничего не потеряешь, если выучишь. Но в принципе там учить особо и нечего, только чтобы практическое применение освоить потребуется некоторое время возможно. Наверно сначала будет хотеться пилить лисапеды, чтобы делать всё как в нормальных языках, но потом придёт некоторое переосмысление ценностей. Чем меньше лишнего оверхэда, тем лучше, высокоуровневую обвязку можно и на скриптовом языке написать.
Очень сильно потеряешь, если выучишь только С, и застрянешь на нем, не понимая более высокоуровневых абстракций. Я таких "высокоуровневых" специалистов видывал достаточно. Никак не могли понять ООП, про ФП вообще не могли понять никак даже близко (а когда это стали требовать, началась паника в рядах). Только процедуры и структуры, будучи убежденными, что они якобы понимают функции только потому, что они свои процедуры называют функциями.
Но ведь ООП и C не взаимоисключающие вещи, вполне даже можно натянуть одно на другое (не всегда стоит). И с ФП тоже непонятно, в чём проблема может быть. Если ты понимаешь си, ты понимаешь, как это работает, а значит, можешь использовать. Оно просто ближе к асму и всё нужно делать самому, а уж что ты сделаешь, тут насколько фантазии хватит. Да и только так ты поймёшь ООП и ФП на уровне, где происходящее не является магией. Если, конечно, вникать в происходящее, а не застревать на высокоуровневости си.
> Но ведь ООП и C не взаимоисключающие вещи, вполне даже можно натянуть одно на другое (не всегда стоит). И с ФП тоже непонятно, в чём проблема может быть. Если ты понимаешь си, ты понимаешь, как это работает, а значит, можешь использовать. Оно просто ближе к асму и всё нужно делать самому, а уж что ты сделаешь, тут насколько фантазии хватит. Да и только так ты поймёшь ООП и ФП на уровне, где происходящее не является магией. Если, конечно, вникать в происходящее, а не застревать на высокоуровневости си.Вы взяли все эти термины и попытались поставить их в какой-то последовательности, чтобы получить, как вам кажется, осмысленные фразы. Может на дилетантов, с которыми вы привыкли общаться, это и произведет впечатление. Но для тех, кто хоть немного понимает в предметах, к которым относятся вышезатронутые термины, сразу заметит, что вы ничего не понимаете ни в ООП, ни тем более в ФП. И даже не представляете что с чем и как соотносится.
Какая еще "высокоуровневость си"? Вы даже и про это не поняли? Си вы тоже, очевидно, не понимаете.
"Но ведь ООП и C не взаимоисключающие вещи" - о да! Вы здесь правы! Только вы это угадали чисто случайно. Если есть одно и есть другое, то есть 50% вероятность, что они не взаимоисключающие, что бы оно ни было!
"Если ты понимаешь си, ты понимаешь, как это работает, а значит, можешь использовать." - типичный трюк, рассчитанный на дилетантов, когда хочется показаться перед ними умным, потому что вместо "си" в эту фразу можно подставить что угодно, и будет выглядеть правильно.
И вот, представляете, именно таких "специалистов" по Си полным полно. Которые что-то такое про Си говорят, и что-то такое даже на Си пишут, сами не понимая что, и разные "насяльники" платят им за это деньги, потому что с последними настоящие специалисты тоже общаться не хотят. Замкнутый круг.
Так что сами решайте, хочет ли кто оказаться в их рядах, нужно ли в наше время начинать с изучения Си.
А сам то Си не виноват, и когда-то был очень не плох, но когда это было?!
И ни слова по существу. Ну-ну.
> И ни слова по существу. Ну-ну.Это вы про себя? Согласен. Потому что я по существу сказал выше. И никто не обязан вам по существу что-то добавлять, если вы по существу ничего возразить не смогли.
> Это вы про себя? Согласен. Потому что я по существу сказал выше.
> И никто не обязан вам по существу что-то добавлять, если вы
> по существу ничего возразить не смогли.Я ответил на фантазии про то, что якобы си как-то мешает осваивать более сложные (и зачастую переоценённые) концепции. А мультитрединг реализовать на setjmp в си, это как, слишком примитивно или нет? И совершенно другой вопрос, стоит ли это делать на практике.
>> Это вы про себя? Согласен. Потому что я по существу сказал выше.
>> И никто не обязан вам по существу что-то добавлять, если вы
>> по существу ничего возразить не смогли.
> Я ответил на фантазии про то, что якобы си как-то мешает осваивать более сложные (и зачастую переоценённые) концепции.А я нигде не говорил такого, что "си как-то мешает". И то что вы это так трактуете, лишь в очередной раз подтверждает, что вы элементарно не понимаете смысла слов.
> А мультитрединг реализовать на setjmp в си, это как, слишком примитивно или нет?
Почему это вдруг при всем богатстве выбора "про Си", вы вдруг резко перескочили на "мультитрединг", а с него вдруг сразу на setjmp. Это все что вы знаете про Си "умного" и "непонятного" (вам самому в надежде что и другие не поймут, и поверят, что вы это знаете). Или вы прямо сейчас начали что-то догугливать про Си, в надежде хоть как-то исправить ваш прокол с предыдущими вашими фразами. Вы лишь продолжаете демонстрировать ваши навыки выпендрежа перед дилетантами, и по-другому вы просто не умеете.
> И совершенно другой вопрос, стоит ли это делать на практике.
И типа такая многозначительная фраза в конце, которую на самом деле тоже можно приложить к чему угодно.
И почему это не было "по существу"? "По существу" то, что к сожалению, вокруг Си, непреднамеренно со стороны настоящих специалистов, сложилась именно такая комфортная зоночка для наглых дилетантов, которые не знают ни смежные предметы, ни более высокий уровень, но что-то там наугад пишут на Си, и так же наугад про него говорят. Что мы здесь "по существу" с вашей стороны и наблюдаем. А больше "по существу" вы пока так и не заслужили.
Так-так, очередной перевод стрелок. Прочитаем же, с чего всё началось https://www.opennet.ru/openforum/vsluhforumID3/125088.html#118Как обычно, в своём глазу -- бревна не вижу? Возможно стоит научиться слышать других для начала, а не тулить своё "исключительное" видение по поводу и без.
Вам просто нечего больше сказать, и это все что вы можете - перейти на выяснение отношений. Что и требовалось показать.
> Вам просто нечего больше сказать, и это все что вы можете -
> перейти на выяснение отношений. Что и требовалось показать.Это даже не смешно. Дам добрый совет: обратитесь к специалисту, дорогой господин аноним.
> Это даже не смешно. Дам добрый совет: обратитесь к специалисту, дорогой господин аноним.Это уже выяснилось, что вы кроме пустой игры слов, ничего на самом деле не можете и не знаете. И теперь вас замкнет, и вы будет это демонстрировать и демонстрировать.
Вот ты повторяешь это в каждом своём ответе. Пытаешься себя же и убедить, или что? Ты сказал чушь, я указал на это, но твой опыт конечно же самый правильный и исчерпывающий.
> Вот ты повторяешь это в каждом своём ответе. Пытаешься себя же и убедить, или что? Ты сказал чушь, я указал на это, но твой опыт конечно же самый правильный и исчерпывающий.Рассуждая от противного, допустим, что все именно так как вы говорите. Допустим, что это вы про меня (всего лишь наобум) "угадали", а не я вас сразу вычислил. Допустим, что у меня нет опыта. Допустим, что это я, а не вы, пытаюсь себя убедить. Для вас после этого что-то поменялось? После того что уже было сказано.
>> Вам просто нечего больше сказать, и это все что вы можете -
>> перейти на выяснение отношений. Что и требовалось показать.
> Это даже не смешно. Дам добрый совет: обратитесь к специалисту, дорогой господин
> аноним.Не удивлюсь, что именно этот дорогой аноним некогда объяснял священные войны C++ vs Rust завистью разрабов на первом.
> "По существу" то, что к сожалению, вокруг Си, непреднамеренно со стороны настоящих специалистов, сложилась именно такая комфортная зоночка для наглых дилетантов, которые не знают ни смежные предметы, ни более высокий уровень, но что-то там наугад пишут на Си, и так же наугад про него говорят.Вы неплохо угадали, однако от имени наглых дилетантов пользуясь случаем замечу, что это неплохой показатель. Видите ли, работает и так. И даже поддерживается годами и малыми человекочасами.
По роду деятельности сталкиваюсь с картиной с другой стороны: приходит к тебе в сишную фирму сверхразраб и начинает рассказывать байки о высоком, утверждать, что на С++ в 10 раз быстрее код пишется (цитата), даже несмотря на очевидные преувеличения в цифрах до конца уверен в своей правоте. Начальство разводит руками, ну а что ты сделаешь, весь код-то написан на Си, не переписывать же его теперь из-за вкусовых предпочтений сверхспециалистов.
И что получается, сверхспециалисты-то высокоуровневые приходят из померших проектов. Писали они там по всем канонам, а потом проект кряк и закрылся. И вот представьте себе, им приходится опускаться до уровня таких как я, постоянно жалуясь, а бизнес тем временем процветает, задачи решаются. Почувствуйте разницу.
Впрочем это конечно субъективная история.
>А мультитрединг реализовать на setjmp в си, это как, слишком примитивно или нет?Как это? На setjmp можно реализовать только stackfull коррутины? Или для тебя треды и коррутины одно и тоже?
Справедливости ради, есть понятие green threads, которые по сути и есть корутины.
Ну пёрнул в лужу...ну признайся. Чё ты как этот.Мультитрединг / многопоточность и green threads это совершенно разные понятия.
Это другой аноним пернул в лужу. Я к тому, что грин-треды как понятие вносит терминологическую путаницу, и подобное смешение понятий не редкость.
Какая разница?! Все равно в Си нет first-class поддержки мультитрединга! И говорить, что как будто в Си мультитрединг делать лучше или удобнее, чем на других языках - бессмыслица и дилетантство! Вообще для мультитрединга лучше подходят языки, где по умолчанию переменные неизменяемые - это единственная влияющая языковая фишка. В остальном, не важно, first-class или библиотеки, это лишь вопрос синтаксиса, а не семантики. Все зависит от реализации системы мультитрединга, ее архитектуры, а не от языка. Язык - это способ выражать мысли, а не материал, и даже не инструмент для конструирования, как многие наивно полагают, потому что не видят, где язык заканчивается, и начинается совсем другое.Но это все не про Си. У есть (точнее еще остались, но быстро таят) свои преимущества кое в чем, но никак не мультитрединг.
> И говорить,
> что как будто в Си мультитрединг делать лучше или удобнее, чем
> на других языках - бессмыслица и дилетантство!Многопоточность (multithreading) -- свойство операционной системы, обеспечивающее возможность параллельного исполнения. Как правило, реализуется на Си, за исключением точки выхода в ISR таймера и инициализации таблиц прерываний.
> Вообще для мультитрединга лучше
> подходят языки, где по умолчанию переменные неизменяемыеЗдесь речь идёт о "параллельной обработке" данных (parallel programming, concurrency), которая может быть реализована поверх вышеупомянутых потоков ОС, так что аккуратнее на них поплёвывайте.
> Но ведь ООП и C не взаимоисключающие вещи, вполне даже можно натянуть
> одно на другое (не всегда стоит). И с ФП тоже непонятно,
> в чём проблема может быть. Если ты понимаешь си, ты понимаешь,
> как это работает, а значит, можешь использовать. Оно просто ближе к
> асму и всё нужно делать самому, а уж что ты сделаешь,
> тут насколько фантазии хватит. Да и только так ты поймёшь ООП
> и ФП на уровне, где происходящее не является магией. Если, конечно,
> вникать в происходящее, а не застревать на высокоуровневости си.Какая занимательная (на самом деле нет) чушь.
"Если ты понимаешь си, ты понимаешь" си - и только думаешь, что понимаешь "как оно там на самом деле работает", на самом деле лишь умея "писать Си на любом ЯП".
Можно ли понимать си и работу компилятора и не понимать асм? Не понимая асм, даже если ты думаешь, что понимаешь сложные концепции других языков, на деле, ты не понимаешь ничего в этой жизни.
> Можно ли понимать си и работу компилятора и не понимать асм? Не понимая асм, даже если ты думаешь, что понимаешь сложные концепции других языков, на деле, ты не понимаешь ничего в этой жизни.Очередной демагогический прием с подменой аргументации (было: понимаешь си -> понимаешь ФС
стало: не понимаешь асм -> не понимаешь ничего) - уныл.
Эту чушь с "пониманием" интернетные воители писали еще 25 лет назад.Повторю: понимая си ты понимаешь си. Не больше. Понимание асм или си не дает волшебных магических свойств понимания сложных концептов, как бы адептам этого бы не хотелось.
Чтобы _понимать_ тот же ФП, нужно хотя бы по вершкам знать теорию, хотя бы в версии "for dummies":
https://a-guide-to-the-purescript-numeric-hierarchy.readthed...
Для ЛП - логика, дизъюнкты-формулы Хорна и проч.
Ну и применение на практике тоже желательно.
Я говорю о том, что си никак не ограничивает в изучении и только расширяет познание. В том числе в плане архитектуры, дизайна систем и практического создания собственных. Естественно, что определённые чужеродные концепции пихать не целесообразно и лучше поискать, где они уже реализованы, однако, я не вижу никаких явных препятствий. Нужно только спросить себя, а будет ли это востребовано или хотя бы полезно? Можно ли получить результат более эффективно, наконец?
Если вообще возникает такой вопрос, то тебе точно не надо.
В России - категорически нет. Работы очень-очень мало, практически нет, кроме откровенного низкопробного шлака. Зарплаты значительно ниже чем Java / C++. Много гос. структур и военки, которые хотят за копейки.Сам не мог устроиться после Samsung RND. Поменял направление.
Что-то приличное - это Samsung RND, Huawei RND, Intel и ещё парочка в этом роде. Но это маленький рынок. Всё остальное дно.
Нам сишники нужны, Москва, Linux RND
Кстати, а где их искать в Москве? Ну т.е. даже просто людей, которые способны собрать модуль Linux, пользоваться отладчиком ядерным и т.д.Давать объявления на headhunter, что ли?
Вроде больше негде, только на HH.
на хабре
На Профункторе же.
хорошие разработчики на hh не ходят, их наймут раньше, чем они даже подумают там зарегистрироватьсяна хабре есть хотя бы какие-то шансы, что увидят вакансию в сайдбаре, читая статью, кликнут и заинтересуются. Чтобы заинтересовались, вакансию надо писать так, чтобы было понятно, почему эта работа интереснее их текущей, а не просто перечислять требования.
> хорошие разработчики на hh не ходят, их наймут раньше, чем они даже подумают там зарегистрироватьсяЭто понятно, а какие-нибудь средние бывают? Да хотя бы начинающие. А то такое ощущение, что корпорации всех сколь-нибудь толковых ещё с первого курса пылесосят, а оставшиеся сами ничего не хотят.
> на хабре есть хотя бы какие-то шансы, что увидят вакансию в сайдбаре, читая статью, кликнут и заинтересуются. Чтобы заинтересовались, вакансию надо писать так, чтобы было понятно, почему эта работа интереснее их текущей, а не просто перечислять требования.
Была такая мысль, закину тому чей мопед.
Мы только через знакомых находили.
В хедхантер от безысходности заглядывали, но это днище, даже основ никто не знает.
> а какие-нибудь средние бывают?Пишу прошивки для китайских товарищей (кастомный линукс и разного рода rtos). Пытался найти работу в РФ, но... никакой удаленки, требование диплома/сертификата (я не профильный и вообще не технарь), смешная зп (меньше, чем у терапевта пдо).
> Пишу прошивки для китайских товарищей (кастомный линукс и разного рода rtos). Пытался найти работу в РФ, но... никакой удаленки, требование диплома/сертификата (я не профильный и вообще не технарь), смешная зп (меньше, чем у терапевта пдо).Я, может, неправильно прочёл, но какая ЗП при этом не считается смешной и куда кидать оффер (возможно, правда, от других китайских товарищей, эти тоже ищут), если что?
Например процентов на 15-20 больше, чем программист на Java/C# с тем же опытом. Потому что программировать на C/C++ сложнее, чем на Java/C#. А значит, если предлагают работу на C/C++ за меньшие или такие же деньги как на Java/C#, а как правило так и происходит - то легче пойти на Java/C# и делать работу полегче за бОльшие деньги.
Сказки не надо. У всех давно есть там резюме скрытые. Только последнюю работу добавить.И про "наймут раньше" - никто на первое попавшееся предложение не согласится, даже очень хорошее.
У всех работодателей есть 2-3 недели чтобы нанять этого специалиста. Все в одинаковых условиях.
Зарплату просто надо нормальную предлагать и пойдут к вам, а не в Яндекс или Mail.ru.
Уходят не на улицу, а куда-то конкретно, уже договорившись. Через знакомых, как правило. Так что если у кого и есть (ни у меня, ни у коллег нет, например), скрытым останется навсегда.Конечно, бывают исключения, но это поиск иголки в стоге сена. Проходили. Устал собеседовать бездарей, в итоге всем для начала разговора давал несложную задачу на рекурсию, кто не справился за 15 минут - до свидания. С hh все отвалились уже на этом этапе. Через знакомых нашли в итоге, да.
Согласен
Денег, кстати, заметно больше, чем в мейлру или Яндексе, но только надо, чтобы было за что их платить.
LinkedIn. Там все более менее нормальные сидят. Постоянно оттуда что-то приходит по предложениям.Уровень там скорее всего получше и повыше HH. Как минимум сразу отсеиваются кто в английском ни бум-бум.
И оттуда я бы рассматривал вакансии в первую очередь.
Да, мне в LinkedIn тоже постоянно офферы присылают.
Но искать там довольно сложно, приходится массово спамить и потом фильтровать. Ну потому что там вообще все, а рекомендации все друг другу, простите, надрачивают, и из них вообще ничего не следует.
Так это не офферы, а именно спам. Типа "давайте пообщаемся, а потом приходите на 5 раундов интервью, а мы на них будем к вам по мелочам докапываться и носом крутить, несмотря на то, что сами вас позвали".
>Денег, кстати, заметно больше, чем в мейлру или ЯндексеЗаметно под микроскопом? Если Яндекс и мыло платят меньше рынка то +2 рубля это заметно выше или нет?
>только надо, чтобы было за что их платить.
Дайте угадаю, вилку з/п вы конечно не озвучиваете, говорите стандартную фразу - "з/п по результатам собеседования". Я такие вакаснии сразу кидаю в "мусорку".
Не угадали. Сумму никто не скрывал, до $5000. Впрочем, вопрос уже полгода как решён.
Что-то маловато. Мы платим разрабам 500000$ (пятьсот тысяч долларов) в день. Вот это достойная з.п.!
и да, если работа связана с опенсорсом хотя бы косвенно, можно просто предложить работу активным контрибьюторам в софт или библиотеки, которые вы активно используете. Обычно почти никто не шифруется, и нагуглить резюме дело на полминуты.
> и да, если работа связана с опенсорсом хотя бы косвенно, можно просто предложить работу активным контрибьюторам в софт или библиотеки, которые вы активно используете. Обычно почти никто не шифруется, и нагуглить резюме дело на полминуты.Эти отвечают в духе «пардон, уже есть full-time работа, так что можем только чуть-чуть в свободное время посмотреть». Возможно, конечно, не все такие, но пока что-то туго.
Это, кстати, уже неплохо. У нас один раз так и было. Сначала в свободное время, потом на выходных, а потом и на фултайм.Конечно, надо, чтобы и задачи интересные были, и денег не меньше, чем было. Ну или если задачи не очень интересные, то сильно больше.
> Нам сишники нужны, Москва, Linux RNDРади интереса - области деятельности, зарплатные вилки?
Гектар леса, вилка от дошика
А где есть?
Там, где
1. Производят (разрабатывают) бытовую технику (телевизоры, принтеры и т.п., роутеры, ...)
2. Есть своя микроэлектронная промышленность
3. Embedded devicesОбычно это всё сильно связано. Язык С остался только в этой области (linux kernel development / драйвера - это всё туда же).
Т.е. на вскидку Китай, США, Европа, Южная Корея и т.п.
Работать на условный Китай пока что можно и из дефолтной страны. Можно фрилансером, а можно в составе конторы, типа какого-нибудь Wi-CAT (первое что вспомнилось из расположенного не в дефолт-сити, а то в нём-то таких контор вообще как грибов и это странно отрицать).Возможно, конечно, это попадает под описание «слишком мало платят», но тут уж каждому своё. Всех денег не заработать всё равно, а задачи пока интересные.
Китайцы и еще немного индусы самые худшие заказчики, которых только можно придумать, постоянно тебя где-нибудь обманут не договорят если через биржу всегда за выполненную работу выставят спор, и тебе заплатят только пол цены если хорошая биржа, а то и ничего если плохая.
Звучит справедливо. Пожалуй, надо было уточнить что не работал через биржу, а только с хорошими знакомыми и знакомыми знакомых.
Работать на США и Европу точно так же можно. А что там биржа берет - а есть разница, если все равно заработаете в два раза больше, чем тут? Сработаетесь, а там договоритесь и без биржи.С китайцами и индусами связываться не стоит, у них и локально хватает относительно недорогих рук.
Вы забыли о рынке высоконагруженных систем. Например, высокопроизводительные пользовательские функции для того же PostgreSQL пишутся именно на C. Впрочем, он и сам весь на C написан. Иных примеров много, но PostgreSQL я упомянул именно в контексте РФ и импортозамещения.
И сколько за это платят? Можно пример вакансий?Ну про "рынок" функций на С под PostgreSQL смешно говорить и называть это рынком. Единичные вакансии - может быть.
Вообще всё что "импортозамещение" - это нищета. Достойных уровню специалиста денег никогда не заплатят. Это всё ниже рынка обычно.
Мне платили нормально в Samsung и американской конторе. В российской - 25 000 (до этого ещё одна "наша" за 25 000). Перешёл оттуда в Samsung - сразу же на 65 000. Это сразу всё говорит о России и отношении к человеческому капиталу.
После Samsung и уже огромного уникального крутейшего опыта - предлагали этот ПАК ФА самолёт разрабатывать за 45 000-60 000, когда я в Samsung уже значительно больше зарабатывал.
Вот и вся Россия и отношение к людям. Никогда не работаете на российские компании / военку / гос. если у вас есть чувство собственного уважения и вы знаете себе цену. Или на вас обязательно наварятся.
Ах, да, начальник не забыл выписать себе премию в 200к и купить новый BWM.
Конечно, можно, запрос в гугле типа "postgres pro вакансии". Эти нище-броды сразу пишут про RUR 20k и скрывают зарплаты специалистов, которым готовы по 30 платить, иначе никто за 20 не пойдет.
Но Вас ждет успех в Силиконовой Долине, прекратите уже общаться на русском, пишите на английском, кто не поймет, тот не Достоин. Или не Достоевский, я точно не помню.
А вы пробовали устроиться в Postgres Pro?Просто 20к - это ставка студента стажёра, работающего по 3 часа в день и ничего не умеющего. Если вы такой, то да, больше вам не светит.
Специалисты в штате даже четыре года назад получали заметно больше. А сейчас тем более.
А Вы не QA случайно? Или русская языка не очень?
Русский язык всегда был для меня больной темой. Как-то на пятёрку сдал, но было это очень давно.
С радостью и благодарностью учту ваши замечания и правки к моему тексту.Нет, я не QA, я - разработчик на С.
Работу надо искать в системном интеграторе, к которому все эти "импортозамещатели" в итоге приходят. Хороший разработчик по PostgreSQL, ориенирущийся в его исходниках и способный делать патчи или функции, стоит сейчас порядка 200 тыс. рублей (Москва, офис). Знаю, потому что в этом году просто принимал участие в рекрутинге таких специалистов. Если же на удаленку, то поменьше. Из Пензы взяли на 160 тыс. руб.
Заказчиков сейчас много. Многие крупные предприятия прямо пинками из правительства вынуждают переходить на PostgreSQL. А профессионалов по PostgreSQL - мало.
>стоит сейчас порядка 200 тыс. рублей (Москва, офисВы это серьёзно? 200 тыр это нишебродство, а в Москве это нишебродство в квадрате.
>>стоит сейчас порядка 200 тыс. рублей (Москва, офис
> Вы это серьёзно? 200 тыр это нишебродство, а в Москве это нишебродство
> в квадрате.Совершенно серьёзно. Более 200 тыс. руб. - это уже тимлид или выше. У Вас либо завышенная оамооценка, либо Вы смотрите на верхнюю планку зарплаты вакансий, забывая, что она, фактически, не достижима при устройстве на работу.
Дружище, это у тебя заниженная самооценка. 200 тыр. в текущих рублях это менее 100 тыр. в рублях 2014 года когда доллар стоил 30 рублей. 200 тыр это вообще ни о чём, это 200,000/74.25=~$2694.
Зарплата меньше $5000 (не включая премии) это вообще не зарплата.
> Дружище, это у тебя заниженная самооценка. 200 тыр. в текущих рублях это
> менее 100 тыр. в рублях 2014 года когда доллар стоил 30
> рублей. 200 тыр это вообще ни о чём, это 200,000/74.25=~$2694.
> Зарплата меньше $5000 (не включая премии) это вообще не зарплата.У меня зарплата выше 200 тыс. руб., так как я уже давно не просто разработчик )
Я говорю о том вознаграждении на которое успешно хантили. Причем, один прогнулся с 300 тыс. в резюме нв 200 тыс. на руки. И ничего, работает )Другое дело, если разработчик вместо того, чтобы тупо кодить по постановке еще погружается в архитектуру решения и бизнес, понимая его потребности, вместо гордых заявлений, мол "я разработчик, а не бухгалтер/логист/производственник/математик". Вот тогда он может стоить и 300, и 400 тыс. руб. Такие примеры я знаю.
Так же знаю примеры разработчиков, говорящих "я специалист по C#/JS, а не по SQL". Такие и 200 тыс. руб. не получат никогда )
>У меня зарплата выше 200 тыс. руб., так как я уже давно не просто разработчик )Т.е. чтобы у вас в компании получать выше 200 тыр. нужно быть не просто разработчиком, а архитектором и бизнес аналитиком, как написано ниже. Всё один в один, как написано в "Работающая Бедность" - https://web.archive.org/web/20180523020936/http://labor-unio...
>Причем, один прогнулся с 300 тыс. в резюме нв 200 тыс. на руки. И ничего, работает )
Потому, что как написано по моей ссылке он не имеет способной требовать за свой труд адекватную. з/п, таких пассивных много в IT.
>Другое дело, если разработчик вместо того, чтобы тупо кодить по постановке еще погружается в архитектуру решения и бизнес, понимая его потребности, вместо гордых заявлений, мол "я разработчик, а не бухгалтер/логист/производственник/математик". Вот тогда он может стоить и 300, и 400 тыс. руб
Такие люди будут стоить в разы больше чем ваши 400 тыр. Главное не работать на отечественного работодателя.
>Так же знаю примеры разработчиков, говорящих "я специалист по C#/JS, а не по SQL". Такие и 200 тыс. руб. не получат никогда )
У вас никогда не получа 200 тыр, а когда начинают работать на буржуев получают больше чем 200 тыр.
> У вас никогда не получа 200 тыр, а когда начинают работать на
> буржуев получают больше чем 200 тыр.Кто же возражает? Другое дело, что на буржуя год поработешь, а потом еще год будешь искать другого буржуя без выходного пособия (а, возможно, и без половины обещанного вознаграждения) и каких либо доходов. Не идеализируйте, пожалуйста.
>на буржуя год поработешь, а потом еще год будешь искать другого буржуя без выходного пособияКто-то запрещает работать сразу на двух разных буржуев? Если один отвалился то второй остался. И искать год это из области сказок, на Linkedin постоянно вакансии прилетают.
>Не идеализируйте, пожалуйста.
Говорю изходя из своего опыта.
>>на буржуя год поработешь, а потом еще год будешь искать другого буржуя без выходного пособия
> Кто-то запрещает работать сразу на двух разных буржуев?Время. Оно не резиновое. И так на одного буржуя уходит далеко не 40 часов в неделю, а 50-60.
> И искать год это из области сказок, на Linkedin
> постоянно вакансии прилетают.Сыпятся. Пачками. В основном из категории спама с попыткой нанять пучок разработчиков за три копейки или вообще без гарантий оплаты труда.
> Говорю изходя из своего опыта.
Тоже самое. Только исходя, а не "изходя" )
>Время. Оно не резиновое. И так на одного буржуя уходит далеко не 40 часов в неделю, а 50-60.НедЪ. Исходя из моего опыта на github в приватном разделе буржуй пишет таски, я их выполняю. Времени занимает меньше 40 часов. Т.е. даже голосом ни разу не общались.
>В основном из категории спама с попыткой нанять пучок разработчиков за три копейки или вообще без гарантий оплаты труда.
Ну это кому как. Кому-то спятся и нормальные вакансии)) Кто на что учился, как говорится.
>Только исходя, а не "изходя" )
Ещё запятые расставьте, а то я спешу, нет времени проверят текст.
>>Только исходя, а не "изходя" )
> Ещё запятые расставьте, а то я спешу, нет времени проверят текст.Пропущенную запятую еще можно списать на опечатку. Я же не придираюсь. А вот вопиющая безграмотность уже о многом говорит. )))
Главное, чтобы код писался без ошибок. Мне за него платят, а не за грамотность.
Кроме, как придраться к ошибкам у вам других объективных притензий не нашлось? Это говорит о омей правоте.
> Главное, чтобы код писался без ошибок. Мне за него платят, а не
> за грамотность.Безграмотность речи - признак безграмотности во всем. Если, конечно, Вы не тролль из-за рубежа, изучавший русский язык на курсах )
Сударь, теперь ты переходишь от частного к общему. Тебе просто нечего противопоставить моим аргументам поэтому ты пытаешься "наковырять козявок в носу". На этом диспут окончен, офидерзейн.
> Сударь, теперь ты переходишь от частного к общему.Цитата где?
А то, что до Вас не дошло то, что я писал, в сущности - лично Ваши проблемы.
С точки зрения работодателя, безграмотный разработчик получит отказ в 99% случаев. Если он, конечно, не иностранец и русский язык в школе не изучал.Резюме с грамматическим ошибками, обычно, отсеиваются сотрудниками HR сразу и до меня не доходят.
> ты пытаешься "наковырять козявок в носу"Пруф: https://rb.ru/news/otkaz-v-najme/
Кстати, даже на hh.ru средня з/п по моей специализации (С++ и всё такое) в среднем 500 тыр., а тим лид от 600 тыр - https://hh.ru/vacancy/47011668?from=vacancy_search_list
Для iOS есть вакансия на 1000,000 (один миллион рублей).
Для rust до 700 тыр.
Для PHP до 700 тыр.
Программист AutoCAD до 800 тыр.
И т.д. и т.п.А вы продолжайте заниматься тем же чем занимались предыдущие 30 лет.
> Кстати, даже на hh.ru средня з/п по моей специализации (С++ и всё
> такое) в среднем 500 тыр., а тим лид от 600 тыр
> - https://hh.ru/vacancy/47011668?from=vacancy_search_listА при чем тут руководящая должность?
> "Управление командой из 5+ человек."Да еще и архитектор ИС?
> "Работа с высокой степенью автономии в принятии локальных архитектурных решений при разработке."Да Вы, сударь, получается, демагог )
Сударь, лично вы утверждаете, что чтобы у вас в компании получать выше чем 200 нужно быть не просто программистом, а ещё и архитектором и бизнесаналитиком. Я вам говорю, что на hh.ru сейчас средняя з/п для сеньора 500 тыр и не нужно быть ни архитектором ни бизнес аналитиком, а 500 тыр это в 2.5 раза больше ваших 200 тыр.
А вот если ещё управлять командой то з/п начинается с 600 тыр., а это уже в 3 раза больше чем ваши 200 тыр., вполне можно ожидать что заплатят и 700 тыр и 800 тыр., а это в 3.5-4 раза больше ваших 200 тыр.Получается, что скупой демагог тыт вы сударь.
> Я вам говорю, что на hh.ru сейчас средняя з/п
> для сеньора 500 тыр
> Получается, что скупой демагог тыт вы сударь.Если Вы действительно не демагог, то где пруф, что СРЕДНЯЯ зарплата для синьёра по РФ (на hh.ru ведь весь РФ!) 500 тыс. руб.?
По опубликованным данным за прошлый год получается этак раза в три ниже )
По Москве средняя зарплата синьёра 200 тыс. руб.
По РФ - 140-160 тыс. руб.
Пруф: https://www.tadviser.ru/index.php/%D0%A1%D1...
>СРЕДНЯЯ зарплата для синьёра по РФТут я уточню, средняя исходя из тех вакансий что лично мне предлагает hh.ru и там где она указана. Исходя из моего опыта именно 500 тыр и является сейчас в Москве средней.
Исходя из ваших слов и исходя по опубликованым данным она является 200 тыр, и всем понятно, что эти 200 тыр сильно, в разы, занижены.p.s. выше речь идёт о людях с опытом, кто умеет делать дело.
p.p.s. Знавал я одного из НИИ, просидел 10 лет в качестве программиста, а по факту даже на джуна не тянул, тупил и т.п. Про таких я не говорю.
>>СРЕДНЯЯ зарплата для синьёра по РФ
> Тут я уточню, средняя исходя из тех вакансий что лично мне предлагаетВы лично - это СРЕДНЯЯ зарплата для синьёра???
Опять явный признак демагогии: переход от частного к общему )))
Я C++ сениор и говорю исходя из своего опыта. А вот вы кто? Представитель работодателя, заинтересованное лицо, вам верить априори нельзя. Если бы я был не прав то не было на hh.ru вакансий с указаной з/п, а они есть.Чао-какао.
> Я C++ сениор и говорю исходя из своего опыта.Вот именно, Вы от частного переходите к общему, что есть прямой признак демагонии.
Тогда как я могу утверждать только на какие суммы хантили на конкретные должноти (это точно не имеет никакое отношение к среднему) и привести пруф о реальной средней зарплате синьёра по РФ (что уже есть аргумент).Пhи чем тут верить или нет? Мы же не религиозные догмы обсуждаем )
В чём противоречие? Я утверждаю, что на 500 тыр. C++ сениоров нанимают свободно, а iOS нанимают даже на 1 миллион рублей в месяц. и это можно проверить.
То, что вы там у себя прогибаете с 300 тыр. на 200 тыр. не говорит, что тот кого прогнули не лопух. Даже если посмотреть hh.ru есть широкий выбор вакансий от 500 тыр. для сениоров. Вайтишникам такие вакансии в ближайшие 5-10 лет не светят конечно, но для людей которые по 20 лет в IT типа меня они открыты.Кого вы там у себя нанимаете не известно, вполне возможно что нанимаете тех кто вообще ни о чём. На этот дискуссию с вами прекращаю. Ибо нет смысла, каждый останется при своём.
> В чём противоречие?Противоречие в том, что из частного нельзя перейти к общему. Я же не отрицал, что есть разработчки получающие намного выше озвученных 200 тыс. руб. Но Вы же сами сказали:
> "Я вам говорю, что на hh.ru сейчас СРЕДНЯЯ з/п для сеньора 500 тыр"Или Вы реально не понимаете, что такое СРЕДНЯЯ? )))
Работаю в Москве. Это среднее по рынку или вообще выше среднего, точно не нищебр0дство. Больше можно рассчитывать только у зарубежных фирм, для востребованных разработчиков и настоящих сеньоров и руководители.
Девляпс, 7 лет опыта (+6 лет технического образования околотопового вуза) в известных российских компаниях, моя зарплата как раз эти 200к(примерно, на руки). Можно заработать больше, примерно до 250к(на руки), максимум 300к(потолок), но для этого надо быть достаточно жёстким сеньером(и тогда вам не нужны мои советы) и взгромоздить на свои плечи практически всю инфраструктуру (человек пароход). Но на этом все, потолок, в российских компаниях больше не заплатят да и до 300 надо очень сильно поискать и постараться. Зарубежные компании в России обещают до 328к на руки, но обещать не значит жениться, в ходе собеседования эта цифра резко опускается.
Так что 200 это нищебр0дство для Москвы далеко от правды, а автор опозорился.
Согласен. До 300к - это что будут предлагать. Реальная зарплата. Если в зарубежную компанию - можно больше.Насколько я знаю сейчас больше всех предлагает Huawei RnD из всех компаний. Там 350к + бонусы можно получать.
Но выше уже только Lead, т.е. руководитель.
Просто для сведения, мне на этой неделе кинули вакансию в HFT, зарплата от $8000 до $13000. $13000*74.25 это 965250 рублей в месяц. И это не lead, а просто senior. Как не платить налоги сами нагуглите если захотите.А вы продолжайтесь заниматься тем чем занимаетесь и считайте дальше, что вне РФ нет IT где платят деньги.
Ну если ты не в состоянии осмыслить и понять что такое средняя зарплата по России, медианная и перцентили то о каких HFT и алгоритмах можно с тобой говорить.Пока ты похож на безграмотного балабоба фантазёр. Ценник тебе максимум 50к.
А ещё я на русском языке пишу с ошибками потому местные рабовладельцы не возьмут меня в рабство, как написано выше. А вот иностранцам всё равно на сколько грамотно я пишу по русски, им главное рабочий качественный код.
Чтобы не быть голословным - https://djinni.co/jobs/289258-senior-software-engineer-c-/
Хорошая вакансия. Но эта ЗП расчитана на Запад (глобальный рынок, где платят нормально) - и она по этим меркам более-менее нормальная, может чуть выше среднего по рынку. А если gross (а скорее всего так и есть...) так вообще... В общем обычные азы экономики и суровая правда - платят в районе рыночной цены.А то что в России ты чуть ли не миллионером будешь...так кто же виноват что страна нищая.
Но это не "в России средняя зарплата", а "можно найти зарубежом, оставаясь в России" единичные вакансии.
Если страна нищая - никто не будет платить больше, если можно меньше.
Гросс, конечно, но удаленная работа на западные компании оформляется как контракт с внештатным сотрудником, со стороны российского разработчика это ИП или самозанятость, то есть налог составляет 6% (по факту, со всеми сопутствующими, получаются потери в районе 7%).Конечно, надо ещё учитывать, что никаких соцгарантий и плюшек нет, организовать себе рабочее место тоже за свой счёт, но в итоге, если подходить с умом, получается заметная выгода. Короче, это для самостоятельных людей, которые умеют считать деньги и способны к высокому уровню самоорганизации. К сожалению, многие талантливые разработчики - инфантильные тюфяки, не способные к самостоятельным действиям, как только это выходит за зону комфорта.
> Заказчиков сейчас много. Многие крупные предприятия прямо пинками из правительства вынуждают переходить на PostgreSQL. А профессионалов по PostgreSQL - мало.Понятно. Даем заработать маленькой прослойке интеграторов хорошие деньги. И плевать что до этого всё работало нормально в большинстве случаев.
>> Заказчиков сейчас много. Многие крупные предприятия прямо пинками из правительства вынуждают переходить на PostgreSQL. А профессионалов по PostgreSQL - мало.
> Понятно. Даем заработать маленькой прослойке интеграторов хорошие деньги. И плевать что
> до этого всё работало нормально в большинстве случаев.Звучит, как откровенно антироссийский троллинг. Мол лучше системообразущее предприятие встанет и срочно начнет переходить на PostgreSQL с остановкой производства, чем заранее плавно на него мигрирует и опасаться санкций уже не будет.
Прошу прощения, забыл прммеры вакансий:
https://hh.ru/vacancy/47061001?from=vacancy_search_list&quer...
https://hh.ru/vacancy/47169817?from=vacancy_search_list&quer...
> Прошу прощения, забыл прммеры вакансий:
> https://hh.ru/vacancy/47061001?from=vacancy_search_list&quer...
> https://hh.ru/vacancy/47169817?from=vacancy_search_list&quer...А какая из них знание С требует? go, python, ну sql.
Обе. Так как если не ориентируешься в исходниках PostgreSQL, которые на С, ни на одну из этих вакансий не возьмут.
> Обе. Так как если не ориентируешься в исходниках PostgreSQL, которые на С,
> ни на одну из этих вакансий не возьмут.Чей-то? А перл нужно знать? Его там в тестах хватает.
Желательно. Я, например, занаю С, С++, Perl и SQL
Какой SQL? Он ведь в разных субд - разный.
Да и с "голого" C толку немного. Что под какие операционки вы на нем писали? Под win, IBM, linux? Какие библиотеки, фремворки использовали?
> Какой SQL?Вам это так важно? Ну ладно: T-SQL (MS SQL), PL/SQL (Oracle), plpgsql (PostgreSQL) и SQL PL (DB2). На остальных кодить не довелось, но, думаю, что освою при необходимости быстро. Главное, разобраться как посмотреть план запроса и имеющиеся статистики. Глядя на них уже запросы оптимизируются для конкретного SQL сервера довольно легко.
> Да и с "голого" C толку немного. Что под какие операционки вы
> на нем писали?Больше всего приходилось писать при отсутствии операционки, начиная с Z80 или 8048/8051 и заканчивая STM32/ESP8266/ESP32. Далее по объему кода идет MS DOS, потом Linux. Немного было для RT-11, VAX/VMS и Winodows. Mежду Windows и Linux разница не велика, если вспомнить о minqw. Да и вообще, я бы не сказал, что операционка так важна, как Вы думаете. Не зря C считается кроссплатформенным языком. В зависимости от задачи, знание операционной системы составляет единицы процентов от знания всей проблемной части решаемой задачи.
Это обычный DBA. Никакого С знать не надо, уметь в исходники Postgres тем более. Не надо путать пользователей/админов БД и разработчиков этих БД.Вообще там не увидел необходимости знаний исходников Postgres. Это вообще отдельная профессия требующая высочайшей квалификации и специфических знаний.
И вот так с С во всём и везде. Все кудахтают как он нужен, он и тут, и там и БД Postgres на нём, и...а н поверку нужен DBA / Go / Java JavaScript. И таких вакансий тысячи.
А вот разработчиков PostgreSQL единицы. И не смотря на экстра-класс и сложность, по зарплате будут получать как и DBA
Более того, DBA зачастую получают сильно много больше разработчиков БД.
В свою очередь DBA, умеющие в C и написание расширений, получают больше, чем просто DBA. Просто потому, что обычно умеют в проблеме разобраться, профилирование не вызывает истерики, исходники доточить и патч отправить.
Ну и разработчики - это не просто погромисты на C :)
В России и баз данных по-сути нет. А главное стартапов и инвестиций.В Америке как я понял этих разработчиков БД с руками оторвут за большие деньги. Я думаю там суммы гораздо больше DBA, просто потому что штучный товар. А стартапов по данным (NewSQL и распределенные БД) пруд пруди. Но и сложность просто зашкаливает.
Про знание C для DBA - возможно. Но думаю мало кому это нужно, очень мало. Это уже overqualified будет. Большинству нужен обычный DBA, а переплачивать просто за знания никто не будет.
Ни фига себе нет! Я уже больше тридцати лет именно внедрением занимаюсь, что всегда обозначает инвестиции. И еще ни одного внедрения без баз данных не случалось.
Другое дело, что много клиентов было как раз с зарубежными инвестициями. Российские инвестиции были только из РФПИ (в Россети и РАО ЕС), Почта России, СУЭК, ММК и Уралмаш (можно еще Союзконтракт добавить, но он уже давно забыт). Ну или помельче конторы, вроде Истра-Нутриция, Сколково, Еврохим, ТВЦ и т.п. Это я перечисляю только те проекты, в которых участвовал.Ну и знание C для DBA по PostgreSQL очень желательно. Потому что все же open source и именно на C. Какая бы классная ни была документация, но пока в исходники не заглянешь - некоторые вещи просто не поймешь.
> В Америке как я понял этих разработчиков БД с руками оторвут за большие деньги.Это с чего ты так понял? Просто из собственного преклонения перед Америкой? Типа у нас всё через жопу, а там то всё по уму! К сожалению, везде всё через жопу. Есть исключения, но они не меняют общее правило.
Потому что там инвестиции и инновации. Посмотрите сколько стартапов и новых баз данных всех мастей пилится. И большинство из них из Америки.Это говорил препод по БД из CMU. Что сейчас это супергорячая тема и разбирают их как пирожки - студентов.
Он курс ведёт.
Стартапов может и много, но стартапы обычно используют готовые СУБД, а не разрабатывают их. Есть наверное и те, кто разрабатывает, но их совсем немного. Преподу я бы сильно не верил, он может просто набивать цену своему курсу.А разработчиков СУБД может и ценят хорошо, но только если они совсем уж гуру, и таких компаний очень мало. Штучный товар, штучный купец, мало свободы перемещения по рынку труда. А если не гуру - думаю, будут платить просто как обычному программисту.
Я про стартапы где пилят базы данных. Не хочу их искать и перечислять. Сейчас там много чего интересного - в первую очередь распределённые SQL БД, так называемые NewSQL. Автономные БД (чтобы это ни значило), встраиваемые и т.д. и т.п.Это не просто препод, это эксперт в мире баз данных.
А сама область настолько сложна, что я даже не могу представить как там можно быть не гуру.
Товар штучный, но должны платить много. Хотя сам я точно не знаю.
Я уверен, что толкового специалиста по кишкам постгреса в Постгрес Про возьмут на очень хороших условиях. Не все же Барнутову с Сигаевым самим писать :)
Наверное. Но зарубежом эти условия будут ещё лучше. Может быть даже значительно лучше.
Ну это никто и не спорит. Но тут требуется хороший уровень английского (очень талантливому разработчику, может, и простят мгимо-финишд, но это ещё надо, чтобы его наняли сначала, языковой барьер на собеседовании может стать непреодолимой преградой) и высокий уровень самоорганизации. Те, кто так может и хочет, в большинстве своём уже на запад и работают.
си - это то, с чего надо начинать, чтобы хотя бы знать, как оно всё втнури устроено на компьютерах, тем более минимально выучить его можно совсем быстро.да и зная си, читать другие языки будет проще (кроме раста, конечно же :)) )
чтобы пощупать как оно внутре устроено начинать нужно с ассемблера, и желательно какого помельче, олдфагам чистого старого 8086 например, а в идеале на современных мелких микроконтроллерах - atmega, msp430, C51 от silabs тоже хороши (дериваты 8051). Добываем devboard за пару копеек, подключаем, грузим тулчейн и ide от производителя, пробуем компилить простейшие демки вроде led-blinky, а потом дизассемблируем, читаем что получилось и думаем. Если интерес разовьется, си постепенно станет понятен сам собой, как логичное продолжение темы. Потому что если сразу с си начинать, чтобы не стать быдлокодером придется понять весь зоопарк современных архитектур, особенности компиляторов, процесс линковки, варианты системных библиотек, способы оптимицации, многопоточность, много еще всяких тонкостей без знания которых сам язык довольно equum vacuum sphaericum.P.S. вот только Arm начинающим лучше не брать, испортили его последние годы сильно, с непривычки глаза болеть будут
Глаза могут болеть от используемого в контроллерах Thumb(-2), но это нормально, оптимизация плотности кода и энергопотребления существенно небесплатны в плане читабельности листингов. А обычный ARMv5/v7 никто не портил, нормально там всё. Правда, поди его найди нынче, либо контроллеры с Thumb, либо большие машинки на AArch64.Советовать начинающему PIC, AVR или 8051 — злобно, конечно, хотя и понятно. Очень уж много совершенно фееричных костылей, которые даже опытному человеку мозг в трубочку свернут, если цель именно понять, а не тупо накопипастить и запустить. Сейчас, конечно, понятно почему в то время именно так сделано, а не иначе, но всё равно такое себе.
В принципе, есть современные ядра AVR0/1/2, там кое-чего поправили, стало веселее. Есть MIPS/RISC-V (да, второй уж очень похож на первый), которые для обучения архитектуре используются, контроллеры на RISC-V — уже не фантастика. MSP430 тоже славный (на фоне сородичей), но дороговат и скуден по возможностям (опять-таки, на фоне сородичей).
вот уже контроллеры изучать - точно глупость несусветнаяучи си, читай исходники ядра, будешь знать больше, чем три девятки опеннета
Ничего ты не будешь знать после C, если не разработчик ядра.Абсолютно бесполезная трата времени.
Хочешь знать как оно устроено...бери любой хороший курс американского университета по Операционным Системам.
А лучше просто подставь американцу задницу. Многие так и делают, не зная ни одного языка программирования, зарабатывают Здесь бапки как Там. А Операционная Система - это Виндовс 10 или 11?
Ну тут уж каждому своё. Не вправе вас осуждать, каждый зарабатывает как умеет.
> Хочешь знать как оно устроено...бери любой хороший курс американского университета по Операционным Системам.курсы там говно, воды дохрена.
Надо брать старые, 90х годов. Того же MIT.
Сейчас все упростили для снежинок, да.
Что его там учить то? За 3 дня. Вот кресты посложнее намного.
> Что его там учить то?Надо изучить, где разложены грабли. Пачку костылей, для того, чтобы обходить отсутствие параметризации. Ещё одну пачку костылей, чтобы инкапсуляцию проводить так, чтобы из API не торчали наружу детали реализации. И всем этим жонглировать надо научиться плюс-минус уверенно.
> За 3 дня.
Не, это больше похоже на 3 года. 3 дня, это если задача сводится к тому, чтобы на фоне предыдущего опыта программирования, научиться писать хелловорды.
>имеет ли смысл учить С с перспективой хотя бы на лет 5-10через 5 лет ты всё ещё будешь жалким джуном с мизерной зп. в этом и прикол более простых языков, на жабоскрипте полгода и вакансии с ЗП 120-150 тыр твои. фулстэк под ноду через 3 года может и на 200 устроиться...
С java 1-2 года опыта и 150тыр твои... 3-5 лет и всё, жизнь удалась - синьёр-помидор с зп 300-400тыр.
по другим языкам не знаю...
Сейчас бум в IoT, там си очень нужен, от контроллеров до драйверов под линукс, и зарплаты хорошие. А яву .net убьёт скоро, что ваш социализм, помяните мое слово, как-то она концептуально куда-то не туда развивается
Этот "бум" ещё 10 лет назад был. А воз и ныне там. Сказки всё это.Пора бы жить реальной жизнью, а не в мечтах.
Когда "бум" это сразу видно. Вот бум в Data Science / Machine Learning.А про убьёт Java...ну это даже хорошо. Можно переписывать инфраструктуру с Java на C# ещё лет 20 спокойно, за те же деньги.
Дай бог потом ещё какой-нибудь язык придумают.
Дотнет уже 20 лет как убивает Джаву, вот только по сей день за пределами windows-мира он нужен только в одной нише - Unity.
Ну за пределами рунета .NET Core вполне себе взлетел. По статистике stackoverflow этот фреймворк самый любимый и сильно опережает React Native и тем более Qt. По той же статистике, сам C# чуть менее популярен чем Java среди программистов. https://insights.stackoverflow.com/survey/2021
>C# чуть менее популярен чем Java среди программистовя начинал с c#, потом ушёл в жабу. сам с# вполне хорош, только он тянет за собой вантуз, так что давайДосвиданья. и убогий core оставьте себе...
>убогий core оставьте себе...Убогий тем, что нельзя использовать WPF? Так сейчас всё тащат в Web, даже приложения Android зачастую просто используют браузер для лучшей интеграцией с Web. При этом зачастую всё делается на контейнерах-микросервисах у которых доступ к ОС близок к нулю.
Хотите DirectX, реестр, File.Open (string path, FileMode mode, FileAccess access, FileShare share). Используйте Wine. Unix сокеты тоже как бы в винде не работают.
Ну, таки не стоит путать отношение к языку/фреймворку и востребованность вне винды. Шарп как язык мне нравится, но внедрений в юниксовом мире единицы. В России вообще по нулям, на западе единичные случаи.А винду я на дух не переношу, совершенно чужеродная и инопланетная для меня вещь. Всю жизнь на юниксах)
Да уж, пердеть в лужи - это вам не Си изучать! :) Дотнету не нужно "убивать Жабу" - она сама подыхает на легаси-проектах. Сам дотнет - вполне самостоятельная платформа, на ней чёрте сколько понаписано. И юнити твой (который нахрен никому не нужен) говорит о твоём узколобом мышлении.
>от контроллеров до драйверов под линукс, и зарплаты хорошиевыпей галоперидолу... финтехи в очереди стоят, выгребают жабистов на зп 300-400тыр в РФ, про буржуев вообще молчу. а драйверы под ляпикс писать - сколько таких вакансий на всю планету?
про дотнет - не бредишь.
самый главный косяк си в том, что писать на нем это боль.... я за любую ЗП не хочу. хотя большую ЗП сишкиным никто и не предлагает.
А Го?
Да, вот в этом и проблема. Работа труднее, а ЗП меньше чем на Яве предлагают. Так я лучше на Яве JSON в POJO мапить буду, чем в C фиксить segmentation fault и искать утечки памяти.
>финтехи в очереди стоят, выгребают жабистов на зп 300-400тыр в РФЧто знать нужно? Java+hibernate+spring достаточно?
>Что знать нужно? Java+hibernate+spring достаточно?какой-то ты странный жабо-синьёр ) напиши в резюме "микросервисы, докер, кафка, elk" на 250 мидлом возьмут )
>какой-то ты странный жабо-синьёр )Я C++ senior. Год писал на C#, не много ковырял Java, тек же писал на Go, Javascript, Python и т.д. Присматриваю запасной аэродром на случай кончины C++.
Вот тут уж точно не стоит беспокоиться, плюсов до пенсии хватит.
Обычно спрашивают ещё про concurrency и multithreading. На практике это не так часто и нужно, но эти вопросы - этакий маркер, чтобы отличить опытного разработчика от вчера прошедшего курсы.
учить С на перспективу - да, а вот С++ уже нет
Ынтерпрайз смотрит на тебя свысока.
Нет, учите rust, и не слушайте тех имбицлов кто против, поверьте, в крупном проекте он выручит. Там уже сами будете путаться.
Толсто.
> Товарищи эксперты, а подскажите, имеет ли смысл учить С, если ранее его
> не знал, имеется ввиду с перспективой хотя бы на лет 5-10?Это каждый решает для себя сам. Однако нужно принимать во внимание, что си -- это единственный в своем роде язык, обладающий возможностью собирать автономные программы, не требующие никакой поддержки со стороны среды исполнения.
Также, в отличие от других распространенных языков, он является языком, ориентированным преимущественно на выражения, нежели на операторы. Это, с одной стороны, позволяет компилятору производить эффективный код, но с другой вызывает определенные проблемы с освоением языка у тех, кто начинал программировать на языках, интенсивно использующих структурное программирование и, в частности, оператор присваивания. Это языки типа паскаля и программирование в ООП стиле на си-кросскросс. Они и продолжают так программировать, создавая "состояния" и меняя их по ходу выполнения.
Самый большой недостаток языка -- неинтуитивность, что ведет к уязвимостям и к труднообнаруживаемым ошибкам. Однако, если внимательно читать стандарт и строго ему следовать, то каких-либо проблем не возникает, мало того, эта "неинтуитивность" позволяет создавать конструкции, невозможные в парадигме структурного программирования.
В отличие от других языков, разного рода учебники и прочие метпособия не раскрывают нюансов синтаксиса и особенностей применения языка даже на треть -- чтобы понять язык и правильно его использовать, нужно обязательно читать стандарт.
Надо сказать, что среди всех языков программирования только два языка имеют внятный и качественный стандарт, покрывающий все нюансы применения -- это ада и си. Остальные, в том числе и iso/iec 14882 -- полный мутняк, написанный индусами.
>среди всех языков программирования только два языка имеют внятный и качественный стандарттак вумно писал, писал, а в конце не выдержал и жидко обделался....
это си-то качественный с его зашкаливающим количеством UB. надеюсь ты про UB уже в курсе )
Интересно, все ли уб отмечены в стандарте?
Нет конечно. Часто UB вытекает из того, что какая-то ситуация не описана в стандарте.
Спасибо
Вопрос слегка некорректный.
"уб" - это надо понимать UB?
Что подразумевается под "U", Undefined или Unspecified?Если это Undefined, то это как раз нарушение стандарта (нарушение правил написания программы).
В стандарте есть примеры таких нарушений, но, естественно, невозможно описать все возможные варианты "сделать не по стандарту".
Дима, дружище, если что и имеет смысл с перспективой в 5-10 лет (а то и 6
на всю жизнь), так это научиться принимать решения в жизни самостоятельно, не оглядываясь на принятый статус-кво и уж тем более на мнение шизофреников с опеннет.
На моем опыте, а я в программировании относительно недолго - с 2014 года, изучение Си стало ключевым. Но это с оговоркой, что в наше время если ты "С программист" это значит что ты знаешь не только сам язык, но и библиотеки, компиляторы, отладчики, архитектуру ОС, азы ассемблера, санитайзеры и прочее.Сфера работы - оупенсурс, кроссплатформенные библиотеки.
Условиями работы доволен.
в IoT (микроустройства) только си
Я крайне рекомендую полазить по Си, немного пописать. Досканально его учить нет смысла (если не собираешься работать), а вот как "базовая культура" он обязателен. Понятие об указателях, функциях, структурах помогает знать, как это всё устроено на железном уровне. И с этой позиции остальные языки понимать гораздо легче. Но сам язык устарел безбожно, это фактически "высокоуровневый ассемблер" - писать на таком современные программы - проще застрелиться.
Хорошее соотношение размера реализации и производительности продукта компиляции
Да, для тех, у кого нет места на диске и кому некуда спешить. Понту с того, что он маленький, если он генерит очень медленный код? Ладно бы других не было...
Для медленного кода есть более прикольный изврат копилятор в одну ассемблерную команду mov. По сравнению с сабжем просто бомбезный изврат https://github.com/xoreaxeaxeax/movfuscator
скорее для тех у кого нет лишнего места в мозгах чтобы вместить понимание исходников gcc, а понимать и уметь в работающий компилятор все же хочется
Он нужен (и используется) для обучения компиляторным технологиям, как минимум. Потому что для начинающих gcc/clang слишком сложны, приходится порядка года въезжать, прежде чем сможешь хоть что-то делать разумное.
TCC для этого крайне плохо подходит (так и тянет назвать его код обфусцированным, хотя это и не совсем так), какой-нибудь Smaller C тоже из той же оперы.Есть, конечно, LCC и ACK, за бугром они для этих целей даже использовались, но писались они в давние времена и заметно обросли усложнениями, да и изначально устроены сложнее QBE.
> Он нужен (и используется) для обученияВот так сразу бы и говорили.
Например, проще адаптировать под принципиально иную архитектуру. Типа того же e2k, не к ночи будь помянут.
Шланг не подходит из-за llvm, а gcc несет слишком много исторического груза.
> он генерит очень медленный кодНаконец-то эксперты Опеннета дали определение в цифрах их любимому словцу "очень". В оригинале "70% производительности от продвинутых компиляторов".
>> он генерит очень медленный код
> Наконец-то эксперты Опеннета дали определение в цифрах их любимому словцу "очень". В
> оригинале "70% производительности от продвинутых компиляторов".А вот не надо приписывать мне мнения всех экспертов. Я говорю за себя и для меня минус 30 процентов это ОЧЕНЬ много. Кстати, gcc и clang это не "продвинутые", а "обычные", дефолтовые компиляторы.
-30% мозгов -- это ОЧЕНЬ много. Чудовищная просадка в мозговой активности. Но строчить комменты на оппеннете -- это не препятствует.
Анон, а ты часом не на питоне пишешь?))
> а ты часом не на питоне пишешь?Очень редко. По большей части пилю всякие либы на си. И бывает обидно, когда я оптимизирую код, а компилятор всё портит. За примерами далеко ходить не надо -- современные процы умеют POPCNT, но компилятор подсовывает софтверную реализацию.
> За примерами
> далеко ходить не надо -- современные процы умеют POPCNT, но компилятор
> подсовывает софтверную реализацию.Слабак! Учись спаривать команды в машкоде!)
> современные процы умеют POPCNT, но компилятор
> подсовывает софтверную реализацию.Не верю! (с)
https://www.opennet.ru/openforum/vsluhforumID3/122094.html#56
> https://www.opennet.ru/openforum/vsluhforumID3/122094.html#56Конечно, приятно, когда компилятор угадывает, что имел в виду программист, но на практике всё это ненадёжно. Зависит от фазы луны, версии компилятора, всяких march и CFLAGS.
70% от clang/gcc - это не очень медленно, это вполне себе.
> 70% от clang/gcc - это не очень медленно, это вполне себе.Т.е. 70% от возможностей твоего компьютера (не гипотетических, а реальных -- бери и пользуйся) это тоже "вполне себе"?
Это как получать лишь 70% от зарплаты. Потому что -- бугага! -- меньше места занимает!!!
Круто, спасибо за информацию. Буду изучать, код действительно не усложнён.
непонятно в чем новость, cproc уже давно пилят, вроде как. А сам проект годный
Это как с растом: 15 лет пилят (с 2006-го), а он всё новый да новый.
Можно использовать в скриптах в качестве интерпретатора? По типу tcc.
tcc не является интерпретатором. При использовании #!/usr/bin/tcc -run он всё еще компилирует код, просто без записи результата в файл. Интерпретаторы же работают совсем по-другому.
Ты забыл самое главное, он его ещё и исполняет.
Эталонное ненужно.
а скажите, как люди раньше жили, ну без мнения анонимов?
Они как зомби пялились в зомбоящик, а там им выдавали на лопате продукцию и они жутко радовались и наворачивали за обе щеки. Но появились независимые, не тролли и не проплаченные комментаторы и стали говорить вы же наворачиваете фекалии с лопаты и один из тысячи зомби прочитал и понял. Стоп я же жру фекалии с лопаты за свой счет, может мне перестать это делать. И перестал он это делать.После этого дня поголовье наворчивателей с лопаты сократилось на 0.01% Вот такая грустная история.
>а скажите, как люди раньше жили, ну без мнения анонимов?а кто это сказал что раньше люди жили без мнения анонимусов? это чистейшей воды миф и теория заговора, почерпнутая из остойников интернета вроде плоской земли и рептилоидов.
раньше - не жили, разве ж жисть!
Они и сейчас живут. Вон расты изобретают. Каждые пару лет появляется такой мёртвораждённый убийца всех на свете с кучкой фанатов.
Уж кто бы говорил
Хороший проект, простая и быстрая альтернатива большим компиляторам будет полезна. Пользоваться им я, конечно, не буду.
Будет полезна для чего, если они прямо декларируют замедление программ в полтора раза за счёт перехода на этот компилатор?
Пайтон тот вообще раз в 20 медленнее работает, кого это волнует? Всем плевать!
Не "всем плевать", а в некоторых ситуациях, это не на первом месте.
Так то питонисты, им-то плевать просто по определению, это понятно.
Он интерпретатор, ему простительно.
Ну на питоне удобно писать. А на C писать отвратительно независимо от компилятора.
Писать то удобно, и быстро.
А в большом чужом/старом коде хрен разберёшся потом.
Аудитория Пайтона это прикладные программисты пользхолвательских интерфейсов,
а Сишечка для ембедеда и ну может оборудования. Вопрос на какое оборудование
это может быть нужно и зачем? Чем не угоден LLVM?
>массивы переменной длины, препроцессор, генерация исполняемых файлов PIE (position independent code) и разделяемых библиотекТ.е. абсолютно не нужное ненужно, котором можно собрать разве что helloworld. Оно хоть в printf может?
printf это libc если что, а не C. Для printf'а там только variadic functions нужны.
> printf это libc если что, а не C. Для printf'а там только
> variadic functions нужны.Стандарт iso/iec 9899 утверждает, что libc -- это такая же часть С, как и, собственно, сам язык.
На стр. 17 читаем:This International Standard is divided into four major subdivisions:
— preliminary elements (clauses 1−4);
— the characteristics of environments that translate and execute C programs (clause 5);
— the language syntax, constraints, and semantics (clause 6);
— the library facilities (clause 7).Все это и составляет сегодня то, что называется языком си.
А почему ты не описал раздел, где пишется про встраиваемые системы?И да, Деннис Ритчи с тобой не согласен. Исторически Стандартная библиотека не являлась частью языка. В стандарте языка описываются библиотеки, только ради того чтобы не было путаницы при реализации этих самых библиотек. Стандартная библиотека - это просто необходимый минимум функций, язык ведь высокоуровневый.
В чистом Си нет жёсткого сцепления библиотека-язык.
> А почему ты не описал раздел, где пишется про встраиваемые системы?В стандарте нет такого раздела -- там есть подраздел 5.1.2 5.1.2 Execution environments, где описываются требования к реализациям hosted и freestanding, а также требования к функционалу libc для каждой. Встраиваемые системы бывают как freestanding, так и hosted.
> И да, Деннис Ритчи с тобой не согласен. Исторически Стандартная библиотека не
> являлась частью языка. В стандарте языка описываются библиотеки, только ради того
> чтобы не было путаницы при реализации этих самых библиотек. Стандартная библиотека
> - это просто необходимый минимум функций, язык ведь высокоуровневый.Денис Ричи вместе с Керниганом давно не у дел -- нынешний си это iso/iec 9899.
> В чистом Си нет жёсткого сцепления библиотека-язык.
Не вводите народ в заблуждение -- нет никакого чистого си, есть просто язык си и iso/iec 9899 -- его стандарт.
Не придуривайся, "чистым" Си называют, чтобы отличать его от Си++. А людей в заблуждение вводит абревиатура C/C++, которое распиарила Майкрософт в своём высере ВижуалСтудия.>Денис Ричи вместе с Керниганом давно не у дел
Не противопостовляй Ритчи и его творение со стандартами. Стандарты пишут люди, которые уважают дух Си. И не придуривайся, тебе всё популярным языком объяснили.
>> А почему ты не описал раздел, где пишется про встраиваемые системы?
> В стандарте нет такого раздела -- там есть подраздел 5.1.2 5.1.2 Execution
> environments, где описываются требования к реализациям hosted и freestanding, а также
> требования к функционалу libc для каждой. Встраиваемые системы
> бывают как freestanding, так и hosted.Требования к freestanding из n1570.pdf: <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h> and <stdnoreturn.h>
В разработке для микроконтроллеров libc обычно не используется, и код тем не менее остаётся на С, кто бы что там не утверждал.
> В разработке для микроконтроллеров libc обычно не используется, и код тем не
> менее остаётся на С, кто бы что там не утверждал.Смелое утверждение. А как ввод/вывод осуществляется? В языке же нет на сей счет ничего. Весь ввод-вывод, и даже типы данных фиксированной длины определены в libc.
Или у Вас libc -- это библиотека, которая обязательно должна называться именно "libc"? Считайте, что в контексте языка си любая библиотека, требования к функционалу которой определены в стандарте, и есть libc, как бы она не называлась.
В микроконтроллерах часто используется статическая сборка приложения прямо вместе с небольшой специализированной операционной системой, из единых исходников в один блоб, и никакими стандартами там даже не пахнет.
Причём ОС может быть и самописная целиком, я как-то немного участвовал в таком проекте (давно было, такой крайне примитивный по нынешним меркам коммуникатор типа первых Палмов), делал tcp/ip стек (с нуля - та еще задачка, скажу я вам).
Впрочем, предоставляемые операционной системой функции - тоже в определенном смысле библиотека, конечно. Просто это все пачка кода, который собирается в единый бинарь, и на «ОС», «библиотеки», и «приложения» разделение чисто условное.
> В микроконтроллерах часто используется статическая сборка приложения прямо вместе с небольшой
> специализированной операционной системой, из единых исходников в один блоб, и никакими
> стандартами там даже не пахнет.Вы просто не понимаете, что такое стандарт на язык программирования, его цель и задачи, ну и не отличаете стандарт от частной реализации в соответствии со стандартом. Это часто встречается у нетерпеливых, кто вместо внимательного чтения документации перед использованием софта, в том числе и компиляторов, начинает их использовать методом бродячей мысли. И так попробовать и этак вместо того, чтобы сначала изучить мануалы.
На самом деле в контролерах часто минимальные библиотеки используются, хотя бывает и без библиотек, но там далеко не весь libc, и недостающее функци описываются самостоятельно.Например для printf делается типа такого:
#include <stdio.h>
Функции объявлены, но при линковке всплывет их отсутствие.
И далее сами реализуем функции read(), write(), putc()... можно и и printf свой простой вариант.
> А как ввод/вывод осуществляется?unsigned char input = *((unsigned char*) ADDRESS_OF_MMAPPED_INPUT_PORT);
*((unsigned char*) ADDRESS_OF_MMAPPED_OUTPUT_PORT) = output;
Some microcontrollers use in()/out() Assembly instructions, but most modern controllers simply memory-map all their ports to avoid adding extra instructions into their set.
>> А как ввод/вывод осуществляется?
> unsigned char input = *((unsigned char*) ADDRESS_OF_MMAPPED_INPUT_PORT);
> *((unsigned char*) ADDRESS_OF_MMAPPED_OUTPUT_PORT) = output;
> Some microcontrollers use in()/out() Assembly instructions, but most modern controllers
> simply memory-map all their ports to avoid adding extra instructions into
> their set.Ну а in()/out() -- это часть языка или таки библиотека?
Собственно, дискуссия ни о чем -- использование части стандарта не отменяет сам стандарт. Тем более, в не hosted среде.
Вместо пустых возражений Вам бы следовало таки стандарт изучить, в том числе и в отношении терминов. Много полезного почерпнете, чего не найдете в книжках и никогда не поднимете на практике (жизни не хватит обучиться на собственных ошибках).
In и out, скорее всего, ни то, ни другое. Ни часть языка, ни часть стандарта Си. Это часть конкретного микроконтроллера
> Ну а in()/out() -- это часть языка или таки библиотека?Это часть программы. Это функции типа:
static inline int in(int port) {
asm( ... );
}
> Смелое утверждение. А как ввод/вывод осуществляется? В языке же нет на сей счет ничего. Весь ввод-вывод, и даже типы данных фиксированной длины определены в libc.Ввода-вывод как он сделан в libc в маленькой эмбеддовщине вообще не нужен. Там ввод-вывод - это дёрганье пинов, или коммуникации по i2c, в libc ничего не этого нет впомине. Типы фиксированной длины это горстка тайпдефов, libc чтобы их определить не нужен от слова вообще.
> Считайте, что в контексте языка си любая библиотека, требования к функционалу которой определены в стандарте, и есть libc, как бы она не называлась.
Повторюсь, можно писать на C с библиотекой вообще никаким требованиям из стандарта не отвечающей. А можно вообще без библиотеки.
>> Смелое утверждение. А как ввод/вывод осуществляется? В языке же нет на сей счет ничего. Весь ввод-вывод, и даже типы данных фиксированной длины определены в libc.
> Ввода-вывод как он сделан в libc в маленькой эмбеддовщине вообще не нужен.
> Там ввод-вывод - это дёрганье пинов, или коммуникации по i2c, в
> libc ничего не этого нет впомине. Типы фиксированной длины это горстка
> тайпдефов, libc чтобы их определить не нужен от слова вообще.
>> Считайте, что в контексте языка си любая библиотека, требования к функционалу которой определены в стандарте, и есть libc, как бы она не называлась.
> Повторюсь, можно писать на C с библиотекой вообще никаким требованиям из стандарта
> не отвечающей. А можно вообще без библиотеки.Без библиотеки нельзя -- в языке, слава богу, нет никаких операторов ввода-вывода. Так что в любом случае Вам придется либо готовую libc брать под Ваш контроллер, либо самому ее под Ваши нужды изготавливать. Я думаю, что Вы просто не понимаете, ни что такое libc, ни что такое язык си, и даже вообще, что такое вычислительная система и как Ваш сишный код во что преобразуется и чем оборачивается перед тем, как передать ему управление. Просто задумайтесь, каким образом вообще "дергаются пины". Кто и как Вам отображает уровень сигнала на "пине" в ноль/единицу какого-то бита в байте по некоторому указателю или в переменной. Нет там никаких пинов -- есть исключительно мнгоразрядные регистры, скорее всего, на D-триггерах, в которые можно что-то записать с шины данных по фронту/спаду синхросигнала, используя машинные инструкции. И два варианта -- регистры эти существуют в отдельном адресном пространстве, или отображаются на память. Поскольку си не различает этих вариантов этого, ему на помощь приходит libc -- библиотека, расширяющая и дополняющая язык си, которая в вашем случае сводит все к "дерганью пинов". В случае полноценной host-среды к этой библиотеке предъявляются четкие требования. Мы ее просто называем libc. В случае не-hosted случая структура, функционал и даже именование файлов оставлены реализации, что ни отнимает у ьакой библиотеки названия libc. Просто потому, что ее кроме как с языком си использовать нигде не возможно.
>[оверквотинг удален]
> перед тем, как передать ему управление. Просто задумайтесь, каким образом вообще
> "дергаются пины". Кто и как Вам отображает уровень сигнала на "пине"
> в ноль/единицу какого-то бита в байте по некоторому указателю или в
> переменной. Нет там никаких пинов -- есть исключительно мнгоразрядные регистры, скорее
> всего, на D-триггерах, в которые можно что-то записать с шины данных
> по фронту/спаду синхросигнала, используя машинные инструкции. И два варианта -- регистры
> эти существуют в отдельном адресном пространстве, или отображаются на память. Поскольку
> си не различает этих вариантов этого, ему на помощь приходит libc
> -- библиотека, расширяющая и дополняющая язык си, которая в вашем случае
> сводит все к "дерганью пинов".Скорее всего как-раз для этого никакая libc не нужна - чтение/запись по указателю уже и так есть в самом языке (для этого разные volatile и изобретали). А функций inp()/outp() наоборот ни в какой libc нет. В каком-то виде libc может потребоваться, если хочется писать как в обычном hosted-окружении - используя memset(), memcpy() и прочие функции, вместо каких-нибудь самодельных и нестандартных ZeroMemory() и CopyMemory(), но опять-же для freestanding - это не требование - как хотите так свои функции и называйте, разве-что, имхо, main() должен быть, а остальное - что хотите, то и городите. А так - любую библиотеку можно назвать libc, хоть даже libxml.
Ты промазал против аргумента со своим контраргументом. Что бы там стандарт не думал на этот счёт, printf -- это не часть языка, printf реализован не в компиляторе, компилятор предоставляет язык разработчикам libc, чтобы те могли написать на нём printf.gcc нихрена не реализует printf, он реализуется в glibc, musl, или ещё в какой реализации libc. llvm не реализует printf, потому что это не его проблема вовсе. Максимум специализированной поддержки printf, который может быть в компиляторе -- это валидация аргументов printf'а, на соответствие форматной строке, с выдачей варнингов, если валидация провалена.
Таким образом, если мы говорим о cproc, то вопросы, которые следует задавать -- это вопросы о поддержке этого cproc разными реализациями стандартных библиотек, а не о том, реализован ли printf в cproc.
> Все это и составляет сегодня то, что называется языком си.
Кого, прстите за мой французский, ипёт чужое горе. Вот кто называет это всё языком си, пускай и встраивает libc в компилятор.
Вы вводите людей в заблуждение, обсуждаемый компилятор не только использует библиотеку си! но и его невозможно перенести на систему без libc! В своей сути си - это юникс, а либ-си прослойка совместимости необходимая для запуска "переносимых" приложений юникса, в том числе и компиляторов.
Это ты сам вводишь людей в заблуждение.1. Аксиома: Библиотека не часть языка Си.
2. Использование библиотек опционально.
3. Если cproc не поддерживает libc, читай пункт 2.
> Вы вводите людей в заблуждение, обсуждаемый компилятор не только использует библиотеку си! но и его невозможно перенести на систему без libcЭто у тебя в голове путаница, поэтому тебе и кажется, что тебя кто-то вводит в заблуждение. Ты, мне кажется, сейчас путаешь не просто библиотеку и компилятор, но ещё и host с target'ом.
bootstrap -- это вообще любопытная штука, в которой много рекурсии, поэтому надо очень чётко отточенное мышление иметь, и очень чёткими формализациями реальности пользоваться, чтобы не путаться в своих мыслях.
> printf это libc если что, а не C. Для printf'а там только
> variadic functions нужны.Спасибо, капитан. Но чтобы вызвать функцию из библиотеки, нужно заинклюдить хедер и слинковаться. Если компилятор анскильный, он может в хедере споткнуться об неподдерживаемую им фичу.
Хамить не надо, если не можешь опровергнуть аксиому, которая гласит: "библиотека не часть языка Си".
> Хамить не надо, если не можешь опровергнуть аксиому, которая гласит: "библиотека не
> часть языка Си".Где я утверждал обратное?
> Хамить не надо, если не можешь опровергнуть аксиомуАксиомы не подлежат доказательству или опровержению. Они или изначально принимаются, или нет.
> Хамить не надо, если не можешь опровергнуть аксиому, которая гласит: "библиотека не
> часть языка Си".Аксиомы не опровергают, а принимаются без доказательств. Сегодня, как и всегда было раньше, рулит аксиома ISO/IEC 9899, которая гласит, что libc является частью языка си. А ты кто такой, чтобы иметь на сей счет личное мнение? Мало того, так еще это мнение и озвучивать? Член секты свидетелей движения "всякое мнение имеет значение"?
>> Хамить не надо, если не можешь опровергнуть аксиому, которая гласит: "библиотека не
>> часть языка Си".
> Аксиомы не опровергают, а принимаются без доказательств. Сегодня, как и всегда было
> раньше, рулит аксиома ISO/IEC 9899, которая гласит, что libc является
> частью языка си. А ты кто такой, чтобы иметь на сей
> счет личное мнение? Мало того, так еще это мнение и озвучивать?
> Член секты свидетелей движения "всякое мнение имеет значение"?Ни в коем случае не споря по поводу аксиом, посмотрите, что может предоставлять компилятор языка C для freestanding окружения:
A conforming freestanding implementation shall accept any strictly conforming program in which the ∗ use of the features specified in the library clause (clause 7) is confined to the contents of
the standard headers <float.h>, <iso646.h>, <limits.h>, <stdalign.h>, <stdarg.h>, <stdbool.h>, <stddef.h>, <stdint.h>, and <stdnoreturn.h>. A conforming implementation may have extensions (including additional library functions), provided they do not alter the behavior of any strictly
conforming program.4)Если правильно помню - ни в одном из заголовочных файлов там нет ни одной функции.
Он уже смотрел, но проигнорировал. Более того, в случае freestanding даже точка входа может иметь отличное от main() наименование (N1570, 5.1.2.1/1).
> При этом возможностей cproc уже достаточно для сборки самого себя, ...gcc 4.7,...Перевод gcc на C++ было такой ошибкой: начало закапывания набора компиляторов.
Согласен, Си плюс-плюс вообще не надо использовать при программировании системных утилит. Это признак дурного тона.
> Согласен, Си плюс-плюс вообще не надо использовать при программировании системных утилит.
> Это признак дурного тона.Вроде как кросс-кросс, а не плюс-плюс?
cpp - создатели компилятора намекали что произносится скорее "плюс плюс", а не "крос крос"
> Согласен, Си плюс-плюс вообще не надо использовать при программировании системных утилит.какая глупость. То что его не надо пихать везде - да, но есть огромная куча уместных мест.
Сам ты порешь глупость. Си плюс-плюс не нужен.
Нет ты
Интересно сравнение с tcc. Легкочитаемость кода компилятора vs скорость компиляции vs производительность результата.
тоже подумал, почему автор в строну tcc не смотрел, или что ему там не понравилось. Но tcc совсем почти не оптимирует (вроде только в случае инлайнинга мог лишние mov убрать, если я его с кем другим не путаю). Возможно это и была причина.
ТСС во многом заточен под компиляцию в один проход, ну и под x86. Backend по всему коду размазан, насколько помню. Ну т.е. точно не то, на чём стоит учиться.
> Интересно сравнение с tcc. Легкочитаемость кода компилятора vs скорость компиляции vs производительность
> результата.Что такое tcc?
tcc - полноценный компилятор, это - поделка без препроцессора (предлагается брать гнутый), без возможности создания библиотек и без поддержки хоть какого-то стандарта. Т.е. просто игрушка своих авторов.
Это не игрушка.
>> позволяет генерировать код, демонстрирующий 70% производительности от продвинутых компиляторовВозьмите мои деньги и дайте два!! Это то, чего мне не хватало в других компиляторах. Они генерировали слишком быстры
> демонстрирующий 70% производительности от продвинутых компиляторовТо есть медленнее.
проиргал с треда
А вообще, я использую арч линукс + и3вм бтв
Больной yблюдок.
Пусть будет. Маленькие компиляторы нужны...
Да нет же.
Что-то вспомнилось про оставшиеся 10% работы за 90% времени
>лицензией ISCБздюки радуются, нормальные люди проходят мимо.
>>лицензией ISC
> Бздюки радуются, нормальные люди проходят мимо.Судя по выражениям - ты не "бздюк". Но и мимо ты тоже пройти не смог.
Хм, а ты самокритичный.
Давайте ещё 150 вариантов https://bellard.org/tcc/// b.
tcc только c99 поддерживает
Нет.
tinycc$ tcc -h | grep ' -std'
-std=c99 Conform to the ISO 1999 C standard (default).
-std=c11 Conform to the ISO 2011 C standard.
А что тебе нужно из C11 в embedded языке?
Юникодные строки
Ну, конечно, аргументный аргумент, но я бы в embedded с Unicode не имел бы вообще дел. Слишком все разбухает и требует дополнительного внимания.
> А что тебе нужно из C11 в embedded языке?Стандартные (а не как расширения компилятора) анонимные структуры/объединения, static_assert, директивы для выравнивания, noreturn. Это то что сам использую постоянно.
В какой-то мере (хотя это уже не совсем встроенка) — _Generic и stdatomic.h
Интересные комментарии про работу C-программистом ) ранее искал вакансии на hh, там интересного по деньгам мало. Остаётся искать на линкедине, наверное, вакансии в зарубежных компаниях.
>Для генерации оптимизированных исполняемых файлов в компиляторе в качестве бэкенда применяется проект QBE.Проект использует копилефт лицензии?
>Код компилятора написан на языке Си и распространяется под свободной лицензией ISC.
Это пермиссивка или копилефт?
https://ru.wikipedia.org/wiki/%D0%9B%D0%...Лицензия ISC (англ. ISC license, Internet Systems Consortium license) — свободная лицензия для программного обеспечения, созданная и используемая Internet Systems Consortium. Она эквивалентна 2-пунктовой лицензии BSD, в которой убран текст, неактуальный вследствие Бернской конвенции 1886 года.
Бздунскоподобная.
70/10
Ну вот когда реализует ещё не реализованное - вот тогда т посмотрим на %% :)
Сим заявляю модераторы. Читайте сей комментарий от начала и до конца. Он обладает силой. Любой модератор с чувством юмора способен дочитать его до конца, посмеяться и понять в чём тут соль. Я знаю что тут есть тролли, но я не тот тролль что нужен вам. Прочитайте сообщение до конца. А теперь если тут есть модератор без чувства юмора: - О, великий хранитель правосудия. Пожалуйста суди этот комментарий мягко. Я знаю что тебе приходилось подчищать комментарии подобного толка. Но я уверен что этот комментарий может сделать этот сайт популярным. Угу-угу. Это прибавит тебе работы. Но ведь это же круто если мы обойдем другие сайты. Верно? Понимаешь? Я пойму тебя если ты его стерёшь, но тебе будет стыдно. Я сюда решил сделать тут ВСЕМ весело. А ты не смог этого понять, ведь тролли хоть и превращаются в камень, но ты так ожесточился, что даже твоё жаждующее справедливости сделало. Начала одного обзаца может вызвать протест. Но потерпи и дочитай до конца. И может быть я смогу чтобы камешек задышал. О том что тут кто-то да верит в фантастику и опеннет.
Обращение народа Раст.
О, великий странник. Не знаю кто читает сие письмо. Но сначала я решил взять тяжкую ношу и примерить наши враждующие народы. И начать это надо так. Здравствуй предатель языка Си. Раз ты понял что это сообщение адресованно именно тебе. Почему ты предаешь язык Си? Он тебя пригрел. А ты его предал. Да-да. Сейчас многие упрекали бы тебя в "синдроме утёнка", но хей. Хоть язык Си не может говорить, ведь он просто язык программирования. Но язык Си тебя любит. А я в какой-то мере тоже люблю язык Си. Раз встал на его защиту, но по неведомым причинам пишу на rust. Угу. Сейчас многих это триггернет, типо как это так. Он пишет хорошее о Си, хотя тут такая жаркая баталия с этими языками, что python не горюй. Попрошу модераторов не удалять это сообщение, я ни в чем не упрекаю тех кто воспинят это на личный счёт. Это сообщение должно хоть как-то сделать невозжное. Примить непримиримое. Хотя такое не возможно, но хотя бы ради эксперимента с аудиторией. Способно ли черствых, но преданных рыцарей языка rust и языка си. Тут побрататься. Хотя бы на время? Поэтому тут надо отписаться что вы ребята, тут братаетесь. Мне бы это понравилось. Рыцарем языка может назвать себя только тот, кто ни разу не принимал другую сторону, а также кто хорошенько посмеется от того что будет написанно дальше.
Рыцарь языка rust, готов даже сквозь слёзы, потому что ему больно, как под каждой новостью все говорят про rust и он видет что кто-то в нём нуждается. И хоть его сообщение стирается в пучине неизвестности, по непонятным причинам, он не приемлет что это сделал модератор. Он думает что это некие непонятные для него силы похители его крик о помощи. И он не принимает сообщений от пользователей что хотят сбить его с правильного пути, думая что он тролль. Он искреннен!
О, да! Слышу ваши мольбы. Почему ты начал с них. Ты же должен задобрить нас! Очень много символов пролилось на нашей поле брани! А знаете что? Я думаю что вы сэры, благородные сэры не понимаете что кто-то из ваших рыцарей. О, да. Развязал эту войну, но не с вашего позволения. Я думаю что давным-давно, когда я ходил в Хогвартс и где мне шляпа-распределитель сказала. Скоро будет твой язык, но он ещё не готов. Жди, юнец. О, да ваш рыцарь о ком вы слагаете легенды, сам решил напасть на благородных донов С++, что хотели улучшить ваш язык плюсами. Но да, это был френдли-файр. Они приняли ваш герб и добавили два плюса и шли с этими знаменами. Но вы их почему-то тоже ненавидете. О, сэры. Я не знаю ваши языки и не знаком с ними. Поэтому я говорю на языке которые понимают все. Литературный русский. Ну и ещё что-то современного. Угу-угу. Чтобы даже те что только выбирают язык. И могут принять любой путь. Я был честен с вами. Но я не забуду как один адепт питона с которым мы слехнулись в поединке, здесь! О, да. Я не говорил с ним так прекрасно как сейчас свами. Но я тебя прощаю ты слышишь. Я признаю что твой язык где-то, как-то может ну, нежножко, капельку... Не! Я не признаюсь! Слишком жестки были мои раны в этой битве. И я не признаюсь что это за рана, иначе буду навеки опозорен. Но сию рану, адепт питона нанёс мне огненным мечом. У-у-ух. Ладно. Всё. Больше я не слова не скажу. Но я где-то думаю что я тоже сделал сию очень срамную рану. И я прощаю его и себя. А другие, другие не простили нас. Вот так вот. -- Волшебник языка Rust.
Зачем нужно это когда есть gcc?
А зачем здесь ты, когда есть Я?
"Сим заявляю модераторы. Читайте сей комментарий от начала и до конца...-- Волшебник языка Rust."
Твой Rust не нужен!
Ну лично мне больше стандарт 14 зашёл чем 11
C99 полностью толком нигде не поддерживается а ты говоришь C11
Один путает стандарты С и С++, другой невпопад "подколол" словом "полностью". Так и живём.
GCC из C99 поддерживает всё, кроме "стандартных прагм", которые, как я понимаю #pragma STDC, остальное всё умеет. Из C11 - тоже всё, кроме тех-же прагм. Майкрософт только недавно стала хоть как-то пытаться поддерживать что-то выше C89, в компиляторе от Intel поддержка, насколько я понял из этих ваших интеренетов, полная.
очень жаль что так и не удалось послушать начальника транспортного цеха.
Ой, полноценной комплексной арифметики в gcc. "GCC does not support the Annex G imaginary types, but this support is optional, and complex multiplication and division have excess overflows at runtime (although not beyond those permitted by C99)."
> очень жаль что так и не удалось послушать начальника транспортного цеха.
> Ой, полноценной комплексной арифметики в gcc. "GCC does not support the Annex
> G imaginary types, but this support is optional, and complex multiplication
> and division have excess overflows at runtime (although not beyond those
> permitted by C99)."Согласен немного недосмотрел, правда как-то в дикой природе не встречал ни одного человека, который-бы пользовался хотя-бы _Complex в C, не то, что ещё и _Imaginary. Плюс, видимо понимая это, разработчики стандарта в C11 все эти Annex-ы G, и прочие K (Bound Checking) сделали необязательными, а последний помнится мне даже хотели удалить, по крайней мере я помню такой запрос подавали. Но да, Вы и Хан правы - gcc не поддерживает, читал что у Intel-а в его ICC с этим лучше, но насколько это правда судить не могу.
Спросить бы всех этих компилякостроителей, вы про D когда-нибудь слышали?!
Иди в садик тебя дети ждут.
Да ладна те. Там есть режим BetterC - вот это лучшая альтернатива C, чем Rust.