×Закрыть

Как выучить C++?

Я учусь в институте и так как нас учат на парах это просто мы заходим а аудиторию и 100 проц. мы должны учить сами , там есть просто лекции и тд в них не понятно.

Можете скинуть книги или видео как вы учились языку C++?

LinkedIn

Лучшие комментарии пропустить

Самое главное: НЕ ЧИТАЙТЕ ТРУП ПТИЦЫ!!!

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Я прочитал 2 раза «the с++ programming language», но это было давно, и мне было нечего делать)
В институтах не учат С++, там оно больше как «C с классами», т.е. при знании синтаксиса С будет достаточно разобраться с описанием классов и наследованием.

1) Читаем следующие книжки:
101.lv/learn/C /index.htm — это по языку
www.relisoft.com/book — это по архитектуре
2) Читаем туториал по питону
3) Пишем на питоне арканоид, расчетку затрат и доходов за месяц, аську, бомбермена, или что-то такое
4) Читаем www.dietmar-kuehl.de/mirror/c -faq
5) Пишем что-то на С++
6) Читаем Страуструпа
7) Ходим по собеседованиям, гуглим ответы на вопросы, устраиваемся с 10-го раза на Embedded C
8) В первый год работы подтягиваем Design Patterns и алгоритмы по Седжвику
9) Через 1.5 — 3 года переходим в другую контору на С++ с повышение зарплаты на 50%

а не простіше вивчити джаву?

А чому така значна роль саме пітону відведена?

Тому що на пітоні кодиться разів у 5 швидше, аніж на плюсах. В результаті за місяць можна щось написати, і зрозуміти, що ти — програміст. На плюсах з пів-року піде, й за цей час депресняк з’їсть.
А ще пітон дуже легко вчиться.
А ще — потім не раз в нагоді стане.
А ще — в нього нема вихлопу компілятора по 2 сторінки на одну помилку.
І є нормальні IDE з дебагером.
І є простий PyGame з купою прикладів.
А ще, маючи уявлення про С та трохи практики з пітоном, можливо уявити, що тобі подобається та в якому напрямку рухатись далі. Не обов’язково доучувати С++, можна Джаву, чи в пітоні залишитись.

зачем такой тернистый путь? сразу учить то на чем работать собираешься будет намного эффективнее и быстрее

А как понять, на чем собираешься? Часто даже в ВУЗ поступают куда случится, а через лет 7 начинают думать, чем в жизни заняться. Так можно попробовать всего по-чуть-чуть.
Ну и архитектура. Обычно специализированные книжки дают инструменты, а вот как этими инструментами собрать что-то работающее — это за кадром.

А как понять, на чем собираешься? Часто даже в ВУЗ поступают куда случится, а через лет 7 начинают думать, чем в жизни заняться. Так можно попробовать всего по-чуть-чуть.
ну любой мейнстрим язык для того направления в программировании, которое нравится, выбор не сильно богатый будет
Ну и архитектура. Обычно специализированные книжки дают инструменты, а вот как этими инструментами собрать что-то работающее — это за кадром.
этим лучше начинать заниматься, имея уже пару лет опыта

Например, берёте online judge и играете. Суть такова: Вам дают проблему, надо закодить решение. Если оно подходит, начисляются баллы.

acm.timus.ru/...emset.aspx?space=1&page=1

Это позволит немного набить руку и не спотыкаться о сам инструмент.

Единственно что — набив рейтинг, не надо думать, что Вы знаете язык. Потому что олимпиадный код не предназначен для чтения людьми. Чтобы Ваш код читали люди, берёте опенсорс и патчите. Или можно попробовать свою игру написать, или программу полезную для чего-то, что лично Вам надо.

Ещё можно читать stackoverflow и пытаться решить вопросы, которые там задают (постить решение необязательно). Потом сверять с accepted answer.

Это в дополнение к уже написанному, а не вместо.

Берешь, бл....ь, и учишь. Что-то не ясно?

Нихрена не понятно. Так оно не работает.
Простой совет это завести свой проект (придумать что хочешь сделать сам) и делать, ошибаться, переписывать опять. Вот так он и учится. И главно не бояться спросить.

Да таки и еще совет по поводу С++ доки/литературы — отдавать предпочтение англоязычному контенту.
В начале изучения, из за незнания инглиша, я ограничивался ресурсами типа рсдн, сейчас понимаю, что это была одна из моих ошибок.

На кывте??? Там уже 15 лет как или посылают в RTFM или сруться вокруг каких-то специфических особенностей стандарта.

А вообще в начале С++ пути язык контента пофиг. И если слабый английский, то лучше по переводным книгам учиться.

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

И еще, пока автор не определился с ЯП, то можно писать прогру на 2х или 3х языках...
Ну там жава и С++, например.
По итогу автор сам, для себя, сможет понять что все все такие ему нужно.

От меня небольщшой совет, если автор такие решить штурмовать С++, то сразу начинаться со всех фич С++11, и не связывать со всеми пережитками С...

А может сразу с++14?
Он же утонет. Начинать с простого и только после двигаться к сложному.

Ну С++11/14 — не так важно, насколько я понимаю в 14 не так уж много измемений.

Ну не знаю, меня как на 2м курсе универа научили printf, так я потом много лет не мог мозг перестроить, что в C++ таки std::cout нужно юзать. То же и со всякими указтателями и т.д.

Ну не знаю, меня как на 2м курсе универа научили printf, так я потом много лет не мог мозг перестроить, что в C++ таки std::cout нужно юзать.
С какой радости??? Это уже религия, однако.
Просто надо знать о нюансах printf и указателей и работы с ними. И со streаms нюансов не меньше.
Но в плюсах еще куча нюансов с мощнейшей виртуализацией с метапрограммированием и т.д.
По сути С++ — это навороченнейший язык с кучей аккуратно разложенных граблей, которые бьют не только тебя по лбу, но и всех вокруг по другим местам — своеобразное минное поле.

А да, мне иногда очень нравиться скрестить шаблонную магию с виртуальным наследованием.
Правда, я, после, в написанное стараюсь не смотреть.
Получаются столь забавные организмы, но такие пугающие.

overengeneering C++ по полной программе. Практически до состояния когда пользоваться им становиться невозможно. Почему-то никому не приходит в голову сделать автомобиль, где бы можно было бы перенастроить педаль тормоза на управление омывайкой, а тормозом управлять с помощью рычага включения поворотников. А фигли? Може кому так удобно. А в плюсах это норма. Предсказать что означает i++; видя только одну строчку, невозможно в принципе. Замечательный язык для разработки в команде.

И более того ++i и i++ в корне разные.
А вот от такого я просто кончаю и бегу подмываться:

#if __cplusplus > 201103L

#define __cpp_lib_chrono_udls 201304

  inline namespace literals
  {
  inline namespace chrono_literals
  {

    namespace __select_type
    {

      using namespace __parse_int;

      template<unsigned long long _Val, typename _Dur>
	struct _Select_type
	: conditional<
	    _Val <= static_cast<unsigned long long>
		      (numeric_limits<typename _Dur::rep>::max()),
	    _Dur, void>
	{
	  static constexpr typename _Select_type::type
	    value{static_cast<typename _Select_type::type>(_Val)};
	};

      template<unsigned long long _Val, typename _Dur>
	constexpr typename _Select_type<_Val, _Dur>::type
	_Select_type<_Val, _Dur>::value;

    } // __select_type

    constexpr chrono::duration<long double, ratio<3600,1>>
    operator""h(long double __hours)
    { return chrono::duration<long double, ratio<3600,1>>{__hours}; }

Но, блин, на замену ему ничего другого больше и нет. Чем его можно заменить?

И именно с++ это позволяет:

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

С++ великолепный язык не только для простреливания ног, но и отстреливания всего, чего можно, всем вокруг.

На С же утонешь в более ни менее большом проекте. Я помню код от Рейтер на С в котором они утонули (хотя код был написан очень неплохо) и заказали нам спортировать его на плюсы с ООП.

Go. Писал и плакал, ощущение что там специально сделано так, чтобы накодить так чтобы никто вокруг не смог разобраться что оно делает, в принципе невозможно. Есть главный принцип KISS — Keep It Simply Stupid. Новые плюсы делают все строго наоборот.

Как на Go сделать dll c С интерфейсом и прилинковать к проекту? Мне это нужно для матлаба — он умеет с си и плюсами работать (mex)?
Мне нужна или статическая либа или динамическая с библиотекой импорта символов и хидер сишный.

Не знаю. Но Го наура умеет использовать сишные либы. И с виндоусом у меня, не очень. Вбейте в гугл Golang Matlab dll

И... пусто. К Go можно прилепить многое, а вот наоборот глухо.
Пока не сделают некий стандартизованный ABI, что можно будет заюзать в линухе и винде или гору биндингов, go так и останется игрушкой для баловства.

groups.google.com/...c/Golang-nuts/kbscla0JM9s
Вполне логичное решение. И межплатформенное.
Можно через named pipe или что там в винде есть? Подготовте данные, скормите их Go, получите обратно ответ. Глянул, JSON матлаб вроде понимает.

[status, result] = system(’goapp.exe -name=test’);
О ... да...
А еще сокеты, пайпы и другие межпроцессные извращения и главное COM c CORBA заюзать тоже можно.
А можно еще на сервер с ораклом данные отправлять и оттуда их матлабом вычитывать.
Извращений придумать можно много, но просто вызывать функцию низя. Так что пока не сделает гугл нормальной работы с Го это остается игрушкой.

А вот с пайпами в винде не советую связываться — они веселые у нее.

А нафига вызывать функцию? По моему это потенциальные грабли. Лучше сделать процесс «Го» процесс «матлаб» и гонять данные между ними. Если какая-то фигня, вы сразу знаете кто виноват.

Это уже идеологические моменты. Вызывать функции или гонять через IPC. Но в любом случае это дополнительный слой со своими проблемами и задержками.
Можно все на процессах писать и гонять данные через IPC...

Гибче быть нужно. Если решение есть и оно работает, то чего не воспользоваться?

Можно и на феррари бульбу возить.

Это несколько строк кода. А зачем вам Го для матлаба?

Ну, читая как его расхваливают, я уж было подумал на нем общение с железом сделать.

А что именно надо? Может как раз там си лучше.

Уже на плюсах сделал. Они мне больше нравятся.

На go можно писать динамические библиотеки — blog.ralch.com/...golang-sharing-libraries . Правда, под виндой это заработает только в августе этого года после выхода go 1.9 — github.com/golang/go/issues/11058 .

На голом Си практически все операционки писаны. Тот же линух, весьма не маленький проект.

Опять древние байки по сотому кругу.

На плюсах, урезаных, только симбиан писан. И где та нокия?

А фотоаппараты — очень даже так делают)

Как? Нажал «включить вспышку» а отвалился объектив?

Почти так. К примеру реакцию на кнопку спуска можно варьировать в широких пределах.
blog.dojoklo.com/...d-tricks-custom-controls

То фигня. Объектив от нажатия на спуск не отвалится.

Всё правильно. printf удобнее, чем cout.

Ну только с cout не нужно следить что выводишь, а с printf куча народа расстреливает память.

Prosto nujno sledit’. A kogda narod s detstva priuchayut ne sledit’ (ne ubirat’ za soboy), potom takie svinarniki poluchayutsia!

Блин, а я когда с новичками общаюсь на предмет обучения первым же заданием заставляю их и на принтефе и на сиауте писать...

А объясняешь, какие подводные камешки (размером со скалу) в каждом случае?

Тебе сейчас? на понт берешь?
Принтф не типобезопасный, перепутал флажек — вывел что попало, перепутал количество или размер параметров — вывел что попало со стека. Ну и нультерменейтед строчки могут оказаться безконечными.

У си-оута какие там подводные камни? Что-то я задумался.. Может что угодно делать в перегруженных юзерами операторах, хоть динамическую память хоть что. Ну и все возможные прелести с временем жизни глобальных объектов им тоже присущи. А больше что-то и в голову ничего не приходит.

У си-оута какие там подводные камни?
Громоздкий. Нет, даже не так — ГРОМОЗДКИЙ. Особенно когда дело до форматирования доходит. По сравнению с лаконичным каким-нибудь «Measured value = %5.3f» выглядит просто ужасно.

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

По сравнению с лаконичным каким-нибудь «Measured value = %5.3f» выглядит просто ужасно.
Хех, это ж надо 30 лет жрать кактус и в С++14 внести proposal for std::putf(). Не знаю, если честно, внесли они его в стандарт или нет, т.к. полностью потерял интерес ко всей этой мышинной возни (я тоже считаю, что стандарт двигает С++ не туда).

Но всегда был boost::format — по лаконичности где-то рядом, но синтаксис другой, более стрёмный.

главный вопрос — зачем
я Страуструпа читал до просветления и книгу по STL для утряски
потом я прочитал Александреску и нах#й ушел в java ибо душа к содомии не лежит

Кому что нравиться.
Но вот мне интересно, после прочтения этого срача у ТС еще не пропало желание погружаться в эту содомию?

Помню, как в плюсах появились шаблоны и я начал читать книжку Джосюитиса. После 3 раз внимательного чтения я начал чуть понимать, что это и чем их нужно есть, но многие трюки оттуда до сих пор не осилил.

А ТС накинул и сбежал :D

Возможно это было последней каплей

ибо душа к содомии не лежит

почему содомия? Просто милое садо-мазо

Я поддержу точку зрения про милое садо-мазо :)

И еще кто-то удивляется, что ТС убежал в страхе?

Вы так говорите, как будто немного садо-мазо кому-то когда-то портило жизнь ^_^

потом я прочитал Александреску и нах#й ушел в java ибо душа к содомии не лежит
Same story. Вычислять всякие фиббоначчи и делать фишки из лиспа (мультиметоды) на темплейтах это конечно интересно, но хочется остаться ментально здоровым.

А я вот почитал и остался на С++. Просто не считаю факториалов в компайл тайм на темплейтах и все....

Кстати.. темплейты для этого больше не нужны вовсе. В С++11 есть модненькие constexpr функции.

на фоне haskell это все хуета и томление души
только алгебраические типы, только хардкор

Тебе сюда www.spoj.com решаеш задачи. Ни один язык быстрее не работает. Остальное для тех кто неасилил плюсы.

Плюсы для тех, кто неасилил ассемблер.

ассемблер для тех, кто не осилил машинный код.
машинный код для тех, кто не осилил хардвер прожектинг.

хардвер прожектинг
VHDL (к) (тм)
Ни один язык быстрее не работает.
Кстати, были тесты, что .NET всего в два раза медленнее C++. Зачем себя мучать?

Ну можно и на С (С++) написать раз в 100 медленнее, чем на JS.
Но вот только С (С++) позволяет вытянуть из железа всё, что оно может, а другие языки нет.

Сложный вопрос, но попытаюсь по порядку.
0. Компьютер у вас вероятно уже есть, если вы конечно не выходите в интернет исключительно с телефона.
Рекомендую на-гуглить Code::Block, ИМХО Visual Studio, KDevelop, Eclipse и т.д. не сильно подходят
для новичков. Тогда как комбинация Code::Blocks + gcc — самое оно.
1. Для начала надо понять синтаксис и принципы на нижнем уровне, операторы и операции, циклы адресная арифметика. Обзаведитесь какой-нибудь книгой для начинающих (на этом уровне не принципиально какой именно).
Попробуйте реализовать strcpy, memset, memmove, strchr, strstr, qsort в «наивных» алгоритмах.
2. Изучаем стандартную библиотеку С
3. Читаем Бъерна Срауструпа и изучаем стандартную библиотеку С++ параллельно с объектно-ориентированным программированием
4. Дальше переходим к решению типичных задачь, для чего обзаведитесь «журналом Мурзилка» т.е.
не безызвестной книгой Герберта Шилдта, в любой редакции (только не для DOS).
5. Теперь учимся писать и проектировать код правильно, изучаем шаблоны, мета програмировнаие и т.д. т.е. читаем все от: Скота Маерса, Бъерна Страуструпа, Андрея Алекаднреску, Герберта Саттера в общем список тут tproger.ru/...p-books-definitive-guide
6. Гуглим Boost, впрочем Скот Маерс вас суда направит
7. Изучаем ОС Windows — читаем и пробуем Джефри Рихтер Windows via C&C++
8. Изучаем Linux/Unix — читаем интернет по теме, курим ман страницы, а так-же Gtk+ и QT.
9. Изучаем операционные системы изнутри, для чего читаем Эндрю Тандербаума в третьей редакции. Из чего понимаем много-здачность, сеть и т.д. и т.д.
10. Изучам: COM, DBus, OpenGL, DirectX, device drivers, TCP/IP и. т.д. в общем это уже по специализации.

Желаю удачи, у вас будут увлекательные ближайшие пять-семь лет. Примерно после пункта 5 уже можно
пробовать устраиваться на работу программистом в качестве «птенца» к хорошему «квочеру». Сюда можно добраться примерно за год-два.

Желаю удачи, у вас будут увлекательные ближайшие пять-семь лет.
После 7 лет картина не улучшится, C++ не только долго изучать, но и неэффективен в написании проектов. Вы сможете на Go написать за месяц ровно то же самое, что на C++ за год.

И да, на Go можно эмбедить код на чистом C. Возникает вполне логичный вопрос: а как это относится к C++? К эффективному решению задач C++ вообще никак не относится.

)) драйв ?
Сейчас есть некая доля проектов, даже нет. Сейчас есть огромная доля написанного на плюсах кода, в таком количестве областях, что какой-то там Го )) даже не светится, и может быть, при желании и наверное больших вложениях их можно было-бы переписать, на новомодных языках, аля Го, хацкель етц, но никто не хочет сталкиваться с процессом проектирования, написания, отладки удовлетворения всех хотелок клиента .. там такое огромное количество слоев, что это Го, хацкель етц, выглядит, убыточно на этапе скетча ). А если всмотреться в современный С++, возникают вопросы. Если в С++ сейчас возможно в компайлтайм анализировать строки, то нафига ГО ? Его можно проанализировать на С++ в компайл тайм, (тем более если знаком с теорией трансляции), и запустить. Все ? Может лучше познакомиться с миром С++ поглубже, дабы иметь возможность на интересное даже если ты учавствуешь в легаси коде ..?

A kto seychas pishet na golom C++? Qt v zuby i vpered

Эмбедеры пишут, как ни странно.

И еще всякие здоровые штуки, вроде Хромика и прочих фотошопов.

Ага, и додавив всех этих наследников Льва Толстого оказатся через N лет знатоком узконишевого языка.

Что за идиотские вопросы «как выучить».
а как выучить азбуку или таблицу умножения?

Не бывает идиотских вопросов, чего, конечно, не скажешь про ответы

бывают. Вопрос «как выучить» именно из таких. Миллионы , даже милиарды людей на земном шаре что учат каждый день на каждом шагу — правописание, математику, иностранные языки, закон Божий, и програмирование в том числе.

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

.

правописание, математику, иностранные языки, закон Божий, и програмирование в том числе.

И для каждой из этих вещей есть свои методологические рекомендации по изучению. Слово «методологические» в этом контексте и означает ответ на вопрос «как учить ... такому-то иднивиду что бы выучить и что бы в результате....» (пробелы заполнить на свой вкус).

Вообще то сам язык лучше не учить. Возьми какую то задачу( Мини игру, небольшой сервер, что то на микроконтроллере и т д), и пробуй написать ее, и когда будешь сталкиваться с трудностями, открываешь статью или книгу и пытаешься разобраться.
Если совсем не знаешь как программировать, выучи самые основы и вперед.

Лучше читать книгу и решать задачу ибо если ничего не читая, для решения простой задачи ты незаметно для себя напишешь целый велосипед, вместо того, чтобы прочитать страницу книги.

Велосипеды — всегда опыт. Потом, когда что-то оптимизнуть надо будет, без велосипедов ох как трудно. Или когда нет ресурсов под библиотеку)

там есть просто лекции и тд в них не понятно.
(facepalm)

безперспективна мова, для чого її вчити?

Та вона ж жива, і буде жить, допоки не вмре останній роутер.

А на чому? Всередині — лінух, зверху — приблуди на плюсах. І усякі set top boxes, і якісь автомобільні системи, і в андроїді під капотом важких програм — достатньо вакансії подивитись.

3,14 і провокація,
роутер на С++ епік-фейл,
в ембедеді якщо є С++, то або мутований або кастрований
усякі сет-топ бокси більш на джаві,
«якісь автомобільні» — так, є якісь, але ту ж навігацію можуть тулити на тій же джаві,
а системний рівень на WinCE (який не підтримує ні Android Auto ni CarPlay)
С++ тупікова куйня, і я би не радив молодим заморочуватися

достатньо вакансії подивитись.
як кіт наплакав

Хотя, к нам всякую древнюю фигню на плюсах, еще долго сливать будут.

будуть але не так дюже як раніше: є Польща, Румунія, Болгарія, Білорусія, Росія ...
не знаю чи то тренд, але як вже разів кілька разів ішов на С++ проект, а тей потім скурвувлявся або на Джаву, або Пітон + С, або взагалі загинався,
тотбо С++ виганяють ссаними тряпками
єдине, де С++ має ще якесь майбутнє, так це проекти на Qt

Польша с Румынией и Болгарией, успешно занимается разработкой нового. (недавно гуглил). У них нормальные суды, низкие налоги, безвиз.... Европейцу с ними комфортно и понятно как работать, как отношения выяснять, если исходники в Китае вдруг окажутся.

Так что мы долго будем за копеечку ковыряться в какашках, от которых отказались ковыряться все в мире.

в ембедеді якщо є С++, то або мутований або кастрований
Во. Безусловно поддерживают кастрацию плюсов. Как ни странно, но когда они кастрированы, они более удобны в использовании. Хотя мы такое можем увидеть на примере коней для пахоты земли. Попробуй не кастрированного в плуг впрячь.

Кастрация ++ заменяет кастрацию некоторых прогеров, которые очень любят программировать ради программирования. Ну вот есть такие люди, которые вместо того чтобы сделать просто, делают сложно.

А embedded ну очень растяжимое понятие сейчас.

Как ни странно, но когда они кастрированы, они более удобны в использовании
Вообще не согласен.

У меня случалось иногда желание иногда поиздеваться над коллегами-прогерами и всунуть чего в стиле Александреску. Код работал и быстро и правильно и только очень немногие могли понять, что там написано. Такой впечатляюще укуренный «write only» код выходил.

Надо было менять коллег.

Какой ты серьезный. А еще у меня был коллега, что любил после 200 г водочки код писать и коммитить. И на следующий день мы с ним и еще пару коллег долго ржали над тем, кто с его кодом после 200г работать пытался.
Ну мы не злобные были. Подождав до вечера, наржавшись вволю, коммит тот откатывали, понятно.

Неужели тут никто сам так не прикалывался?

в ембедеді якщо є С++, то або мутований або кастрований
В эмбеддеде вообще мало нормальных людей водится, они и не такое чудят.
усякі сет-топ бокси більш на джаві,
Эмбеддед такой эмбеддед. Сколько там гигабайт оперативы и частота процессора, чтобы джава хотя бы завелась?

Как, как, книжки читали, и то, периодически по мелочам в ногу стреляет. Т.е. никак.

Лафоре, потом книжки Скотта Мейера. И надо практиковаться, рекомендую решать задачи на hackerrank. И алгоритмы подучишь и к языку привыкнешь.

Я начинал с легендарной С++ за 21 день — но ее не советую

С++ — не надо. Тупиковая ветвь эволюции, которая в среднесрочной перспективе отомрет.
Системные дела стоит осваивать на С, а объектные на Java.

С++ — не надо. Тупиковая ветвь эволюции, которая в среднесрочной перспективе отомрет.

После того, как я обнаружил, что в Java нет аналога var из C#, в то время как даже в консервативном C++ есть auto, я уже не уверен, кто тут тупиковая ветвь эволюции.
Или вам лично интересно строчить такие телеги?

Кукарек<кококо> кукарек = new Кукарек<кококо>();

Ну auto — это «синтаксический сахар», как любили говаривать на одном русскоязычном форуме.
Но С и С++ еще те уродцы, но замены пока им нет и не предвидится.

полный бред.
Синтаксический сахар — это for (auto v : collection) мелкое упрощение на уровне синтаксиса. Впрочем как правило даже не меняющее глубины компилятора, аля >>
auto нечто глубже, куда глубже чем var в шарпах

Синтаксический сахар --- это всё, кроме прямого ассемблирования в машкодах.

А что, у вас большая часть времени на набивание кода уходит?
На подсматривание, что значит очередной var тоже время уходит.

А что, у вас большая часть времени на набивание кода уходит?

Как раз на чтение, чему эти все джунгли кода и мешают.

На подсматривание, что значит очередной var тоже время уходит.

В нормальной IDE взял, навёл курсор, увидел.
К тому же в нормальном коде автоматический тип переменной обычно очевиден из способа её получения (была соответствующая дискуссия на DOU, кстати).

В нормальной IDE взял, навёл курсор, увидел.
Ну вот да, бывает что по нескольку раз.
В целом нормальная фича, но есть тенденция нею злоупотреблять, имхо

Хз, мне в скале порою хочеться поотрывать руки тем чудакам которые тип переменной иногда не подставляют. и ноги тем кто тип возвращаемой функции не подставляет.

Экономия ресурса клавиатуры блин

Только из-за этого?
Я тут давеча посмотрел на перспективный план развития С++ и выглядит он, как попытка сделать путем тюнинга из копейки современное авто.
Ну не заточен его концепт под современные параллельные
архитектуры.
Менеджед языки прячут это под виртуальной машиной, для С-ориетированных задач с нуля создали Go
А комитет Cxxxx продолжает натягивать сову на глобус.

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

современные параллельные архитектуры.
Менеджед языки прячут это под виртуальной машиной

Б-же, что вы несете...

не стесняйтесь, просветите дурака

So what ?
Впрочем не надо продолжать, вы не поняли о чем я, но не могли пройти мимо.
Вступать же в cхоластические споры настроения нету.

так может всё таки объяснишь? а то написал какую-то хуету и в кусты)

Ок. Почему в С в стандартной библиотеке только необходимый минимум и почему в Джаве напротив — все запихнуто в иерархию классов?

без понятия, вообще.
но, ИМХО, первый подход правильней. зачем включать кучу шлака, который не факт что понадобится?

Потому что нативный код не должен зависеть ни от железа, ни от операционки.
Но есть одна загвоздка — весь паралеллизм неотъемлем от железа.

ну да, логично.
я не большой спец в embedded, мой опыт работы с железками — это в основном зоопарк консолей разных поколений. там как правило всё красиво завёрнуто в СДК, который на Сях.
ну и ни о каком managed там речь не идёт, естессно.

Зачем эмбеддед? POSIX vs Win.
Потоки и примитивы синхронизации радикально разные, поэтому всегда выносились за пределы ядра языка.
Можно еще добавить о нюансах многоядерности и доступа к памяти, но длинно писать лень, а на короткое опять «граммар-наци» набигут.

Потоки и примитивы синхронизации радикально разные, поэтому всегда выносились за пределы ядра языка.

Вывод в консоль на этих системах тоже очень разный, однако это не помешало запилить cout/sprintf итд. Вопрос только в том, что и когда почесались стандартизировать.

И та же Java как-то работает на всех системах с мультитредом, вот удивительно-то.

И та же Java как-то работает на всех системах с мультитредом, вот удивительно-то.
К примеру, андроид сам по себе ещё с горем пополам работает на машине отличной от того, что использует гугуль. А вот огромное количество приложений тупо глючат и падают, кто-то не ожидал, что дочерний поток выполниться чуть быстрее основного и оп-па, приложение свернулось и всё в таком же духе.

Да и в Java потоки лишь слегка по-умнее сделаны, чем стандартной библиотеке, но тоже кастрированные по самое нехочу, чтобы обеспечить универсальность.

А вот огромное количество приложений тупо глючат и падают, кто-то не ожидал, что дочерний поток выполниться чуть быстрее основного и оп-па, приложение свернулось и всё в таком же духе.

Это проблема ни разу не API и не мультитреда, это проблема криво написанного приложения. Такие же проблемы наблюдались, когда «типа мультитредный код» с классического одноядерного процессора переводился на проц с HT, а оттуда — на честный дуалкор. Тут-то «весна всё и показала»...

но тоже кастрированные по самое нехочу, чтобы обеспечить универсальность.

Это-то понятно, но для большинства приложений хватит и этого. Кому нужна специфика, тот будет использовать нативное API.

Это проблема ни разу не API и не мультитреда, это проблема криво написанного приложения.
И да и нет. С одной стороны Java должна всё-таки абстрагировать от ОС и платформы, с другой стороны она очень сильно подвержена влиянию ОС, на которой работает java машина.
с другой стороны она очень сильно подвержена влиянию ОС, на которой работает java машина.

Не понял. При чём тут Java-машина к тому, что разработчик не предусмотрел в коде одну из ШТАТНЫХ ситуация в программировании мультитреда?

Как много java разработчиков готовы к тому, что машина будет запущена под ОС с включённой инверсией приоритетов?

Это вопрос фильтра при найме. Скажем, в своё время собеседовался в Яндекс, и было собеседование по яве, хоть это и не моя основная специальность. Так вот в основном оно было именно по мультитреду и довольно серьёзное.

Но есть одна загвоздка — весь паралеллизм неотъемлем от железа.
И от ОС, например, задание scheduling policy для сложных неоднородных задач.

Мне чего-то кажется, что Евгений имел в виду наличие возможности паралеллизма средствами языка а-ля ADA. Ну или а-ля вот такое www.threadingbuildingblocks.org .

С другой стороны у меня столько вопросов к реализации потоков в standard library, что отбивает всякую охоту ими пользоваться. Думается с паралеллизмом будет та же фигня, неплохо было бы иметь, но с другой стороны нужен больший контроль над паралеллизмом, который язык дать не в состоянии. В результате пользоваться никто не будет.

обнаружил, что в Java нет аналога var из C#
Я только начал учить C# после java, и var показался интересным, но вот придумать где бы его использовать я не смог, можете подсказать?

Да везде, где реальный тип будет очевиден из выражения.
Приводили пример:

var oldDate = entity.Date;
var newDate = Convert.ToDateTime(entityVM.Date);
_entityService.UpdateEntityWithDates(oldDate, newDate);

Не в ближайшие 10 лет. Но с, и с++ вернулись в ту нишу, для которой предназначались. Да был период, когда они были затычкой в каждой дырке. Но сейчас для кучи разных задач появилась куча более приспособленных для этих задач языков.
А вот в своей узкой нише С и С++ заменить нечем. Это всякое системное программирование, ембедед, разная метематика, где нужно из процов и памяти максимум вытягивать. И С++ обычно юзают там, где на С тонешь из-за объема задачи. Именно ООП и метапрогрограммирование начинают выручать.

Возможно Гугл плотнее возьмется за go (мозилла rust не потянет довести до чего-то) и начнет его портировать на разнообразнейшее железо, причем так, чтобы он не сливал С и С++. Но на это ему дохрена лет понадобиться.

C++ в системном программировании и эмбеддед? Свят-свят.

і як воно?
згадував нещодавно проекти на яких працював — найбільш гучний пшик був світч на ембеддед С++.

та якось німецький автопром з допомогою аутсорса той кактус їсть

Возможно Гугл плотнее возьмется за go (мозилла rust не потянет довести до чего-то) и начнет его портировать на разнообразнейшее железо, причем так, чтобы он не сливал С и С++. Но на это ему дохрена лет понадобиться.
Уже портировали. Вот на чем сейчас работает go (взято из golang.org/...nstall/source#environment ):

Choices for $GOOS are darwin (Mac OS X 10.8 and above and iOS), dragonfly, freebsd, linux, netbsd, openbsd, plan9, solaris and windows. Choices for $GOARCH are amd64 (64-bit x86, the most mature port), 386 (32-bit x86), arm (32-bit ARM), arm64 (64-bit ARM), ppc64le (PowerPC 64-bit, little-endian), ppc64 (PowerPC 64-bit, big-endian), mips64le (MIPS 64-bit, little-endian), and mips64 (MIPS 64-bit, big-endian). mipsle (MIPS 32-bit, little-endian), and mips (MIPS 32-bit, big-endian).

oh..kak tam java na embedded pojivaet? ;)

Android — чем вам не embedded

heroven’kiy takoy embedded. tem bolee, osnovnie servisy tam na C++ napisany, a dliya neuchey, nesposobnyh razobratsia s ukazateliyami prikrutili JVM

Обычный толстый эмбед, с осью и шлюхами

eto vsego lish white papers
kak ono v reale?

Что в реале? Работает. Если нет требования риал-тайма -отличный выбор. Прекрасно жужжит, прямо из коробки получатся куча достаточно высокоуровневых фич. Нет рисков, что какая-нибудь third-party библиотека выкинет подпольный эксепшен.

Самое главное: НЕ ЧИТАЙТЕ ТРУП ПТИЦЫ!!!

УПС... drive.google.com/...VbEFud1ItZURoOEk5bVc5VnpJ
Ctrl-Z, Ctrl-Z... ))
А если серьезно, что не так с книгами создателя?

Не умеет он учебную литературу писать.

Ну кстати не факт. Все списки литературы, в том числе и тут приведенные рекомендуют новичкам в том числе и его новый «A Tour of C++». Я правда сам его в руках не держал, и помня ощущение от его старых книг рекомендовать эту книгу никому не спешу :). Лучше уж проверенные временем авторы и учебники.

Ну а как не советовать книгу автора языка?

Ну как как, молча. Класическая книга вообще не для новичков. Страуструп сам признавался когда-то, что не знает как учить новичков и что никогда их не учил. Новую новичковскую книгу я в руках не держал, потому и ничего сказать не могу.

Могу ещё по опыту сказать, что всякие философские рассуждения Гвидо фон Россума тоже не особо способствуют изучению Питона.

По джаве и до-диезу тоже не авторы языков написали лучшие учебники.

По скале очень популярен курс Сподарски на курсере, но тот парень, насколько я понимаю, сам из академических кругов.

Классическая, не означает лучшая.

вообще-то хотя бы ради одной фразы стоит.
если вы себе представляете С++ как наследование и виртуальные функции, вам следует начать учить другой язык.

Я пошел проще:

1. Сделать компьютер и понять как он работает. Я спаял спектрум потом долго его настраивал и апгрейдил.
2. Разобраться с ассемблером и понять как работает PC.
3. Писать на Си, если чего не ясно смотреть в дебагере на уровне ассемблера чего оно там нагенерило. (только оптимизацию выключите).

Но если вас интересует бабло, и есть понимание что времени у вас только до 35 лет, чтобы заработать до самой смерти, то занимайтесь жавой. Там вообще можно писать и не знать ни сколько бит в байте и вольт в розетке.

Можно не паять спектрум и при этом знать, сколько бит в байте, я гарантирую это!

Кто не может спаять спектрум с закрытыми глазами за 42 секунды, тот не программист

Паяльник дадут или тоже самому делать?

С паяльником любой дурак сможет =/

Да как оказалось, нет. Там асинхронный дизайн, и задержки подгоняются RC цепочками.

Паяльник любой дурак сделает.

Ни одна из Wave soldering machine не считает себя программистом. Нейронные сети еще не достаточно развились.

Начинающий программист твёрдо знает, сколько бит в байте. Опытный — ни в чём не уверен.

Писал для проца в котором байт был 16 бит. Как ни удивительно я был в этом уверен.

Так а сколько же бит в байте? Меня всегда интересовал этот вопрос..

есть понимание что времени у вас только до 35 лет
Как считаете, для чего существует инфляция и кризисы? Инфляция и кризисы существуют для того, чтобы заставить образно говоря, тупых обезьян работать. Всю жизнь работать, от окончания школы, и желательно до гробовой доски, и чтобы не случилось такой ситуации, что обезьяна заработала денег, и дальше почивает на лаврах.

А если обезьян слишком много, а работы слишком мало?

Это идеальная ситуация, тогда шансы почивать на лаврах у обезьян сводятся к нулю.

Ага и можно отбирать обезъян по росту, цвету глаз и длинне хвоста. У кого хвост не такой — идите отдыхать.

поэтому и обезьян подводят к мысли, что жилье не надо покупать, а надо снимать всю жизнь.

Артем Бондаренко отвечает Артему Бондаренко. Ребята посередени загадывайте желание

в Джаві нема байтів, байти в Шарпу і Qt

В жабе нельшя a&255 сделать?

понять на каком уровне ? когда ldt , gdt грузится ? ))

Начиная от того как транзистор работает. :)

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

Совет не очень для новичка, которому на лекциях не все понятно. Ему лучше бы для начала книгу-учебник написанный для новичков, а не энциклопедию.

Дело в том, что по С++ написано огромное количество литературы и большинство книг являются откровенно плохими: либо ошибки, либо дурное содержание, противоречия стандарту и т.д. Избегайте книг типа «C++ за 21 день» и т.д. На stackoverflow есть хороший пост со списком книг, которые признаны комьюнити, как годные для обучения С++. Загляните сюда, список книг разбит по секциям от новичка до эксперта.
stackoverflow.com/...de-and-list/388282#388282
Также не забывайте постоянно практиковаться, иначе продвинуться в изучении языка не удастся.

По сути 2 книжки нужны:
Страуструп, чтобы узнать что и как можно написать.
И «танцы с бубном» Майерса, что и как писать не надо.
Остальное только практикой набирается.

Я припоминаю учебник Лафоре Р. «Объектно-ориентированное программирование в С++». Было очень давно, но помню, что я угорел по этой книге. Но как сейчас — не знаю, может что-то лучше появилось.

Мені колись книга за авторством Прата дуже сподобалася.

Paul Deitel “C++ How to Program”

Продам книги Джесса Либерти «Освой самостоятельно С++ за 21 день» (сам я кстате не осилил), «Стандартная библиотека С++ на примерах»

Хотя «праймер» липпмана не занял первое место, но я бы его посоветовала для начала. Очень уж нравится, как пишет. Вот не советовала бы «праймер» Праты, объясняет он намного хуже. А вообще — вам это нужно, чтоб потом работать по этому направлению, или просто чтоб сдать экзамен?

«праймер» липпмана
Девушка, ты зачем такие слова выучила?

Ну чтоб войти глубоко в айти, конечно же

А, нет, я передумала. Просто на кухне стоять варить борщи было скучно, вот я умные слова и заучивала.

#неумелаваритьборщи

#ненеумелаанелюбила

Тоже удивило отсутствие в рекомендациях праймера, отличная книга. Еще для старта хороший курс на MVA C++: A General Purpose Language and Library Jump Start, живенько все рассказано.

Две книги для начала:
1. Керниган и Ричи, «Язык программирования Си»
2. Герберт Шилдт, «Самоучитель по C++», который с вопросами для самопроверки.
И пройти внимательно обе, отвечая на вопросы.

Ты и вправду учил/начинал учить по ним плюсы? Мне они не понравились вообще :(

Именно по ним. Вопросы для самопроверки особо ценны, так как позволяют устранить пробелы при невнимательном чтении.
А чем не понравились?

Ну может это у меня просто личное какие-то невосприятие Шилдта как такового. Мне просто не очень нравится, как написано и как читается. И с Керниганом то же самое. Имхо, книгописатель из него не очень. Но это в любом случае вопрос личных предпочтений.

Насчёт вопросов на самопроверку соглашусь, конечно.

Ну как я уже писала, каждому своё :) Может в другой раз, другое настроение и т.д. у меня с ними сложилось бы лучше

Может в другой раз, другое настроение
Интересно, а какие книжки ты читаешь сейчас?

Сейчас вы пишете на доу ;)

Но это ведь не отменяет того факта, что на книжки почему-то не хватает времени?

В таком случае я порадуюсь, что мне хватает времени на всё ^_^ это преимущество sloth перед gamedev-ами)

Подозреваю, что это далеко не единственное преимущество

sloth

У С++ ников всегда есть отмазка — у меня код компилируется...

И шо, ни разу не приходилось лазить в листинг (дизасемблер), смотреть почему компилируется но не работает?

Ну допустим что приходилось, правда не в дизассемблер, мне для моих скромных запросов как правило дебагера или лога хватало. И что? Как это связанно с тем, что я написал? Я ж имел ввиду другое.

xkcd.ru/303

За 13 лет на C++ — практически никогда.
Ситуация как с compiler internal error — определяем, при каких условиях воспроизводится и делаем иначе.

Не я не про «с compiler internal error». Просто не работает и все. Сообщения об ошибки нету, бо дисплея нет. В логах ничего, бо файловой системы нет. Просто «включаешь — не работает!».

По-моему для любого современного девайса есть хотя бы терминал, а то и какой-нибудь jtag + дебагер. В самом крайнем случае диодик которым можно поморгать... Если вдруг этого нет, то по-моему есть смысл для начала инвестировать в инструменты разработки, а только потом разрабатывать.

До светодиодика еще нужно кучу всего инициализировать. PLL, IO итд. А смысл есть. Вот времени нет. И железо на менее безумное могут не дать переделать. Типа вот вам дохлая лошадь, вот вам ипподром. Через два месяца лошадь должна выиграть скачку. Время пошло.

Пойду у жены спрошу, что она об этом думает. Я далек на самом деле от такого низкоуровневого эмбедеда мой опыт ограничивается вполне серьезной одной коробкой под VxWorks много-много лет назад. Вот сейчас еще видосиков насмотревшись IncludeOS щупаю. Софтина с которой я сейчас работаю на embeded платформах под линуксом бегает. А вот зачем работать с платформами под которые нету эффективных средств разработки я честно говоря не очень понимаю. Ясно что «жить захочешь не так раскорячишся». Но по своей воле я бы такого не делал.

Ок, проконсультировался у специалистов — мне объяснили, что «трафунки тарфляються розмаїті» особенно на этапе когда делают новое железо.

Пойду у жены спрошу, что она об этом думает.
...
Ок, проконсультировался — «трафунки тарфляються розмаїті»
В нас часом не одна й та сама дружина? Чи то може версія прошивки однакова?
Чи то може версія прошивки однакова?

Та люди взагалі між собою якісь до неймовірності подібні. Та історія про «я не такий як всі» то все вигадки для молодих.

А вот зачем работать с платформами под которые нету эффективных средств разработки я честно говоря не очень понимаю.
Как правило — это дешевейшее железо, и платят за софт соответственно. С другой стороны я написал драйвера уже под десятка 1.5 дисплей контроллеров, а работа такая, что часто результат можно увидеть через 2-4 недели только. Средств отладки никаких вообще. Так же и с 3D акселераторами, чтобы получить треугольник на экране нужно написать 90% драйвера, до этого никакого результата нет и доступна только косвенная отладка — прочитал значение регистра и успокоился, а понять то ли железка закончила, то ли вообще даже не начинала что-то делать ты не знаешь. Ну и так далее.

Дешевейшее железо как правило лепят тиражами в сотки мильонов. Цена ошибки, имеет столько же нулей. Про оплату, стоит думать перед тем как писать.

А про 3Д акселлераторы могу только сказать что должен один человек как железо писать так и драйвер. Читать регистр, это плохо. Железка должна сама прерывание сделать, когда закончила. PCIe по MSI-X их доусрачки поддерживает. выделить пару сотен для дебага сам Бог (Ктулху) велел.

А про 3Д акселлераторы могу только сказать что должен один человек как железо писать так и драйвер.
В году 1990 — да, так и надо было, сейчас упаси бох железячников подпускать к софту. Они ж софт писать не умеют.
Железка должна сама прерывание сделать, когда закончила.
В году 2000 — да, так и было. Сейчас скорости совершенно другие — прерывания — это тормоза. В обработчике сидеть долго нельзя, заводить отдельный поток для прерываний и сигналить туда из обработчика прерываний — это геморрой с асинхронной обработкой. Сейчас делают иначе, каждое приложение через GL юзерлевел драйвер генерирует команды для GPU в памяти, последней командой идёт запись в память какого-то уникального значения и так для каждой серии пакетов, юзерлевел драйвер спускает GPU и периодически смотрит уникальные значения по адресам, куда они должны быть записаны, как только запись появляется, серия пакетов считается отработанной. Можно заряжать GPU дальше, пока он обрабатывает остальные пакеты. У такого решения латенси на порядок ниже, чем у решения с прерываниями.

Прерывание это 70 наносекунд. От запроса на ответ. Чтение данных из PCI устройства такое же тормознутое.

Прерывание это 70 наносекунд. От запроса на ответ.
Это теория. Прерывания — это огромнейший стресс для процессора. Вот реальные измерения www.qnx.com/...f_Interrupt_latency_.html

В прерывании ещё нужно что-то делать, не просто так его вызывать.

Чтение данных из PCI устройства такое же тормознутое.
Чтение данных из PCI устройства не блокирует систему, как вызов прерывания. Ну и к тому же ты явно не прочитал, что я написал — запись производиться в обычную системную память. Это такой же регистр, как и все остальные, только правила немного другие.

Чтение из PCI как раз блокирует систему еще как! Процессор должен послать запрос по шине, на который ему придет ответ. Не помню сколько там по времени минимум, но PCI может отвечать весьма и весьма долго, к примеру обратится к своей памяти, которая может быть очень тормознутой.
А прерывание, сразу посылает процессор по указанному вектору. Я вообще делал так, что самое PCI устройство заполняло память данными которые нужно обработать, потом посылало прерывание, и процессор эти данные обрабатывал, ничего уже у PCI не спрашивая.

А в QNX разве нельзя просто сделать обработчик прерывания? Какие-то дурные цифры. В линухе у меня наносекунды получались, а тут микросекунды. Запрос чтения это 70нс, а 70 нс, при тактовой в 4ггц это 280 команд процессора.
46 микросекунд от прерывания до отклика это 46000 команд на процессоре в 1 ггц. Откуда тормоза? QNX Майкрософт вроде не покупала.

Чтение из PCI как раз блокирует систему еще как! Процессор должен послать запрос по шине, на который ему придет ответ. Не помню сколько там по времени минимум, но PCI может отвечать весьма и весьма долго, к примеру обратится к своей памяти, которая может быть очень тормознутой.
Ну опять же это знание почерпнутое из PCI 1.0, сейчас арбитраж шины немножечко сложнее. Но ты прав, что плата самоделкина может посадить всю систему из-за PCI.
В линухе у меня наносекунды получались, а тут микросекунды. Запрос чтения это 70нс, а 70 нс, при тактовой в 4ггц это 280 команд процессора.
Простой тест — UART без FIFO на скорости 1 мегабод. У тебя загрузка процессора должна быть 70/1000 ~ 7%. Удачи.

Вообще-то PCIe. Вы телепат — неудачник, или просто мания величия заставляет оскорблять людей? Еще раз. Дело не в арбитраже шины. Ядро процессора послало запрос на чтение из памяти PCI устройства. Пока PCI не ответит ядро процессора будет стоять.

Про тест, то в народе говорят с дуру можно и член сломать.

Вообще-то PCIe. Вы телепат — неудачник, или просто мания величия заставляет оскорблять людей?
Судя по всему я как раз попал в точку. Видел я на своём веку достаточно много любителей альтер с писиай мегафункцией, которые делали платы — убийцы. Как правило про тормознутость кричат именно те, кто её делает %) Ничего личного, просто наблюдения за дикой природой в embedded заповеднике.
Ядро процессора послало запрос на чтение из памяти PCI устройства. Пока PCI не ответит ядро процессора будет стоять.
Это ничем не отличается от доступа к системной памяти. Те же правила. Держишь шину больше положенного — твои проблемы.
Про тест, то в народе говорят с дуру можно и член сломать.
Зато узнаешь ценность своих измерений.

Вы вообще в строение PCI хоть что-то понимаете?

Нет, конечно. Это уникальное право дано PCISIG’ом только Artem Bondarenko.

А поняли хоть что-то?

If you’re so smart, why aren’t you rich?

Mike Gorchak в список Форбс уже вошел? Вот уж поржал.

А я то тут причём? Мне пока рано, я до сих пор учусь.

Судя по хамству на форуме в школе, в младших классах.

Да как скажешь, лишь бы тебе от этого лучше стало. Ты же сам лезешь в тред с овердофига умными комментариями, а потом пищишь, что обижают.

Кого обижают? Меня? Ты? Который предлагает телепортировать что-то с алиэкспреса на печатную плату? Который толком так и не смог пояснить как контора в которой ты якобы работаешь умудряется тратить 46 миллисекунд в супер-реалтаймовой операционки на то что в нифига не реалтаймовом линухе уходит в 500 ПЯТЬСОТ раз меньше времени? Это просто смешно.

Который предлагает телепортировать что-то с алиэкспреса на печатную плату?
Я ничего не предлагал телепортировать. Оформляешь заказ, тебе высылают, впаиваешь себе на плату. Я тебе предложил решение, которое используют все silicon vendor’s из top10. Ну это не для тебя, ты же умнее всех. Что тебя не устраивает? Почему это устраивается всех кроме тебя?
Который толком так и не смог пояснить как контора в которой ты якобы работаешь умудряется тратить 46 миллисекунд в супер-реалтаймовой операционки на то что в нифига не реалтаймовом линухе уходит в 500 ПЯТЬСОТ раз меньше времени?
Ну как тебя серьёзно воспринимать, если ты путаешь миллисекунды и микросекунды. Ты приводишь какие-то цифры с потолка и я должен оправдываться почему всё не так работает как ты думал, в то время как серьёзные независимые профи родили вот такой документ: dl6.globalstf.org/.../article/download/555/571 . Где даже RT-Linux не дотягивает до твоих измерений.

Вот тебе второй эксперимент — на быстром железе — 10микросекунд в RTLinux: github.com/.../master/interrupt_latency — там даже видео есть.

Вот тебе третий эксперимент:
github.com/atlas555/rt-test

Куда впаивать? Але? Нету места куда впаивать. Плата это такая штука, куда после изготовления нельзя что-то произвольное допаять, не предусмотренное. Это не софт. Может стоит хоть немного знать предмет обсуждения?
«silicon vendor’s из top10» слово красивое? Понравилось? Хоть что означает в курсе? Это те, кто продают железки СПЕЦИАЛЬНО сделанные для ОТЛАДКИ. Тоесть это программа которую компилировали со всем дебаг фичами, без включения оптимизации итд. Если по такому принципу сделать телефон, он будет размерами как тумбочка. Теоретег.....

Сударь. Я таких «серьезных независимых профи» тоже могу нагуглить вагон и малую тележку. Я могу отвечать только за свой, личный опыт. И свои личные замеры. Причем в отличии от «специалистов по гайке с левой резьбой» и «специалистов по гайке с правой резьбой», у меня есть возможность смотреть на процесс в комплексе. Кроме того, ну вот так получилось что я еще знаю как компьютер работает. Сколько занимает операция записи в память, сколько чтения, и как именно они происходят ПО ТАКТАМ. С точностью не микросекунды а НАНО секунды. И я уже приводил свои данные, сколько времени происходит от запроса на прерывание до реакции на прерывание.

Все же объясните, как получилось так, что для того чтобы как-то прореагировать на событие, самой реалтаймовой операционки нужно исполнить 46000 команд. (если тактовая 1 ггц).

Да, тип прерывания — MSI-X (так, на всякий случай, авось вам в школе расскажут что это) Вас ведь на PCI-SIG не забанили?

Куда впаивать? Але? Нету места куда впаивать. Плата это такая штука, куда после изготовления нельзя что-то произвольное допаять, не предусмотренное. Это не софт. Может стоит хоть немного знать предмет обсуждения?
Компания, которая не может себе позволить сделать отладочную версию платы для разработчиков софта, точно также не может себе позволить рыночную зарплату для разработчиков. Всё просто, как дважды-два. Это то, с чего началось обсуждение.
«silicon vendor’s из top10» слово красивое? Понравилось?
Я этими словами говорю, если что. Других нет.
Хоть что означает в курсе? Это те, кто продают железки СПЕЦИАЛЬНО сделанные для ОТЛАДКИ.
Да, и это нормально. Хорошие компании покупают для своих разработчиков Evaluation Boards для того, чтобы разработчики могли отладить и протестировать весь софт до того, как будет изготовлена конечная плата. Очень хорошие компании получают такие платы бесплатно. Если у компании нет отладочной платы и они сразу лезу в продакшен, то из такой компании нужно уходить как можно быстрее. Дела там не будет.
Тоесть это программа которую компилировали со всем дебаг фичами, без включения оптимизации итд. Если по такому принципу сделать телефон, он будет размерами как тумбочка. Теоретег.....
Полное название компании QNX Software Systems Limited, a subsidiary of BlackBerry. И да, мы производим телефоны в том числе. Отладочный телефон вполне себе миниатюрный. Кто из нас теоретик?
Сударь. Я таких «серьезных независимых профи» тоже могу нагуглить вагон и малую тележку. Я могу отвечать только за свой, личный опыт. И свои личные замеры.
Я не увидел «ответов», просто голословное утверждение. Ни методики измерения, ни точных технических данных.
Кроме того, ну вот так получилось что я еще знаю как компьютер работает.
Твои предыдущие ответы показывают, что ты застрял где-то в начале 2000 и дальше не развивался. Ничего личного, просто наблюдение.
Сколько занимает операция записи в память, сколько чтения, и как именно они происходят ПО ТАКТАМ.
В суперскалярных архитектурах? Ну я даже не знаю что сказать. Молодец. Это часто не знает даже сам процессор, только постфактум.
Все же объясните, как получилось так, что для того чтобы как-то прореагировать на событие, самой реалтаймовой операционки нужно исполнить 46000 команд. (если тактовая 1 ггц).
Опять же для того, чтобы объяснить, человек не должен пребывать на уровне пещерного человека в уверенности что одна команда — 1 такт.

Знаю, что ты не любишь многостраничные документы, вот очень хорошое разжевывание современной архитектуры (3 поколения назад, но пойдёт для начала): www.realworldtech.com/haswell-cpu — всего 6 страниц.

Да, тип прерывания — MSI-X (так, на всякий случай, авось вам в школе расскажут что это) Вас ведь на PCI-SIG не забанили?
Для процессора это не меняет ровным счётом ничего, для операционной системы просто меньше interrupt sharing’а. Что сказать-то этим хотел?
Они ж софт писать не умеют.
Умеют, правда от вида ими написанным у меня появляется острое желание грамм 200 водки заглотить, чтобы начать понимать, что там написали.Часто их код напоминает фиксы багов в железе несколькими десятками длинных проводков припаянных к плате.
чтобы начать понимать, что там написали
Зачем? Это же «write only» программирование
Это же «write only» программирование
Записал себе в блокнотик, хорошее выражение! :)

Так еще про Перл говорили)

Просто не работает и все.

Значит, методом двоичного деления и включения/отключения блоков кода определяем, на каком этапе перестаёт работать.

В логах ничего, бо файловой системы нет.

Что, и сети никакой нет? И средств связи никаких нет? И светодиодов нет? Отлаживаем сферический вселенский разум в вакууме?

А, впрочем, вам в эмбеде, наверное, виднее. Вот потому я в это болото и не суюсь :)

И правильно делаете.

Что, и сети никакой нет? И средств связи никаких нет? И светодиодов нет? Отлаживаем сферический вселенский разум в вакууме?
Обычно есть GPIO и дофига. Вот такое вешается на GPIO: home.roboticlab.eu/...s/display/segment_display и получается замечательный инструмент отладки — 127 легкочитаемых состояний. Там даже код есть рабочий в статье.

Дофига вы загнули. Если один-два пина есть, уже хорошо. Если два есть, можно софтверный SPI сделать, подключить сдвиговый регистр и уже на него повесить 7 сегментный индикатор. Но обычно приходится обходится осциллографом.

Даже в 8080 был один пин INTE, который можно было использовать для светодиодной отладки, а в классических embedded поделиях а ля 8051 изначально было четыре 8-ми битовых порта. Так что не надо тут прибедняться.

Хорошо живете вы. Обычно пины заняты разной переферией. И если уж об некрофилии, то покажите мне те четыре 8 битовых порта в СС2530

Хорошо живете вы. Обычно пины заняты разной переферией.
Не всё коту масленница. По-очереди подключаешь переферию и отлаживаешь.
И если уж об некрофилии, то покажите мне те четыре 8 битовых порта в СС2530
Там целых три порта и специализированный (sic!) debug interface. То просто ваша Галя балувана.

Ну класс! Как это «По-очереди подключаешь переферию». Резать дорожки и потом снова их спаивать? Вы хоть раз печатную плату современную видели? Хоть знаете что это такое?

Резать дорожки и потом снова их спаивать?
Боже, какое варварство. См. www.alibaba.com/...room/mini-dip-switch.html
Вы хоть раз печатную плату современную видели? Хоть знаете что это такое?
Нет, конечно, откуда? Дядя, я не настоящик сварщик, я просто маску нашёл © Последние 8 лет я работаю только с инженерными образцами, чего я только не видел.

Ну разве что видели. А работать пробовали?

Не хватало ещё.

Вы хоть раз печатную плату современную видели?
При диком жлобстве, отладочную плату можно и утюгом сделать. Но это признак аматоров, не профессионалов.

Ага. Слоев так на 8...12. И с контролируемым имедансом... Аматоры...

Зачем тебе такая плата в аматорстве? Денег девать некуда?

Не все аматорством занимаются. Хотя у нас, наверно только в нем отрасль и осталась.

Те, кто не аматорстсвом, сначала думают, как отлаживать будут и добавляют нужное железо на плату.

К сожалению не всегда тот кто пишет софт, делает и плату. А тех кто делает плату, проблемы тех кто потом будет писать софт не2.7..ут. Добро пожаловать в реальный мир.

Ты же сам путаешь аматорсво с промпроизводством.

Аматорство, это когда человек делает для себя и делает КРАСИВО. А производство, для дяди и быстро. Ну так чтобы дяде понравилось. А дяди нравится дешевле и быстрее. Откуда в таком случае возьмутся тестпоинты?

Тупой дядя заплатит трижды — это его проблемы.

Это не отменяет проблем у конкретного прогера.

Прогеры в задницах мира должны страдать.
Что я еще могу тебе сказать.
Некий бедный араб-индус-пакистанец-украинец решил запилить крутой железячный стартап. За 3 бакса сделал платку, за 3 бакса нанял прогера в заднице мира. В результате тебе приходиться ковыряться в говне.
Ты думаешь я постоянно не сталкиваюсь с запросами с стиле, а можно порвать гугловские разработки за 3 дня. Это 99% предложений здесь.
Для нормальных предложений есть прогеры в америках, канадах и германиях — они правда чаще работают или на производствах или в научных лабораториях и за деньги слабо сравнимые с тем, что предлагают аутсосрсерам.

Ну, значит нужно ехать в Индию, чистить карму, и в следующей жизни родиться в правильной стране.

Или успеть на трактор в этой. Мне уже поздно, остался разве что Ном, но семейство против белых медведей.

Некий бедный араб-индус-пакистанец-украинец решил запилить крутой железячный стартап. За 3 бакса сделал платку, за 3 бакса нанял прогера в заднице мира. В результате тебе приходиться ковыряться в говне.
Это ещё глоток свежего воздуха. Бывает гораздо хуже. Есть местный украинский делец, который захотел сделать какое-то устройство, но из комплектующих у него в распоряжении только пару дохлых микроконтроллеров, которые можно купить на складе, для остальных нужна предоплата, ждать пару месяцев, да и цена после прохождения украинских барыг получается космическая. Тут времени думать нет, нужно работать. Этот делец пытается сделать устройство по-дешевле, ему же ещё его нужно продать и получить 500% прибыли, за меньшее они работать не хотят. Половину типов корпусов у нас в Украине паяют с браком под 30%, QA нулевое. Нужно заказывать и платы и пайку в Китае, а там сидят те же барыги, но китайские, с тем же оборудованием, ибо чтобы заказать нормальную пайку, то нужно раскошелиться даже в Китае. А тут ещё эти программеры зарплату просят и пищат, что нет средств отладки, а делец им честно украл IAR или GHS для разработки, а те ещё и недовольны и что-то хотят. Как ты думаешь, высоко ценят эмбеддеров в этой конторе? Абсолютно не ценят.

Ну я постарался не вываливать полностью говна, чуть приукрасить. А так да, ты прав.
Ты свалил на своем тракторе и с подобным чрезвычайно редко встречаешься, а Артем нет, вот и разгребает говны.
И тут либо он успевает на трактор, либо «расслабляется и получает удовольствие» ©

Трактор тут не причём, у человека всегда есть выбор. Если в 95% всех работ необходимо разрабатывать железо и писать софт одновременно, то это банальная попытка работодателя экономить на работниках, а не иметь суперспеца — жнеца и на дуде игреца. Что придаёт ложную собственную значимость, которая имеет значение только на локальном рынке, где все работы и оплаты дерьмовые. А когда ты апплаишься на нормальную работу, то по этому поводу возникает очень много вопросов и со стороны это выглядит как реклама одного древнего почившего украинского мобильного оператора «всё и ни@уя толком.» netzaicev.ru/.../Джинс Всё и нихуя толком

Ну да ладно, каждый сам пи#дец своему счастью.

Трактор тут не причём
Не надоело еще болезненно на оное реагировать?
Речь шла о выборе у Артема. Или трактор или расслабиться и получать удовольствие. Ну не будет здесь в ближайшие 50 лет достаточного объема приличной работы в ембедед, как и во многом другом, просто не может быть (если таукитяне не прилетят).

З.Ы. Тем ни менее ембедер должен понимать, что ему за железо дали

Речь шла о выборе у Артема. Или трактор или расслабиться и получать удовольствие.
Да не поможет тут трактор. От слова совсем.
Ну не будет здесь в ближайшие 50 лет достаточного объема приличной работы в ембедед, как и во многом другом, просто не может быть (если таукитяне не прилетят).
Хватает работы, но да, доллар сам между жопой и диваном не залезет. Важно то, как ты себя позиционируешь. Позиционируешь себя кабачником — только такие работы и будут предлагать, от тебя будут хотеть не сделать работу на отлично, а хотеть сэкономить, и чтобы работало. Тут некого винить. Понимаешь, это как гнать дома на продажу самогонку и хеннесси, всегда будут очереди за дешевой самогонкой и ни одного клиента для покупки хеннесси, хоть ты его там по всем технологиям 20 лет выдерживал. Но это не означает, что клиентов для хеннесси нет, хотя их у тебя действительно нет, это лишь означает, что у них нет ничего общего с потребителями самогонки и водятся они в других местах. Так понятнее?
З.Ы. Тем ни менее ембедер должен понимать, что ему за железо дали
Конечно, это само собой разумеющееся.
водятся они в других местах.
И я об этом.

В других местах — означает не в наливайке, а в лаунж баре напротив. Для этого не надо колесить земной шар.

Эх, быстро ты забыл местные особенности.

Здесь нет молочных рек и кисельных берегов. Ассортимент бухла несколько больший, но правила игры те же, что и в Украине.

Но это не означает, что клиентов для хеннесси нет, хотя их у тебя действительно нет, это лишь означает, что у них нет ничего общего с потребителями самогонки и водятся они в других местах. Так понятнее?

Вот тут не согласен. Не вижу я принципиальной разницы между «клиентов нету» и «клиентов нету у тебя». Теоретически можно кому-то предложить коньяк хорошего уровня по сходной цене, но я слабо себе представляю как самогонщик может организовать продажи «ылитного» коньяка. Разве что качественный контрафакт производить... ну не знаю.

Не вижу я принципиальной разницы между «клиентов нету» и «клиентов нету у тебя».
Разница огромная. Типичный пример:
1) Кабачники — типичный пример lavalink.com — зарплата макс $70,000 (работал там один знакомый, со старта $55,000 — $60,000). Плату развести, железку спроектировать, софт доковырять и т.п. Кабачники — от слова кабачка — железка непонятного назначения и функциональности, пардон май френч.
2) Не-кабачники (высокоуровненый или hi-tech embedded) — Ciena, Apple, Cisco, Aversan, Huawei (как ни странно, да), Blackberry и т.п. Есть и галеры местного значения, но в любом случае тут надо постараться, чтобы получить со старта меньше $90,000, скорее просто не возьмут.

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

В пункте 1) с очень большой вероятностью тебя встретит босс-индус. Кабачников довольно немного, так что тут тоже можно смело кричать, что работы в ембеддеде нет и за неё мало платят.

Разницы c Украиной нет никакой.

но я слабо себе представляю как самогонщик может организовать продажи «ылитного» коньяка. Разве что качественный контрафакт производить... ну не знаю.
Это не важно, назовём его «Vasya’s Brandy» и будем позиционировать его как ылитное пойло, коим по мнению Васи оно и является. Но надо отказаться от торговли обычным самогоном, чтобы бренд не портить.

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

Кабачники
?

То же, что и водителю троллейбуса — наслаждаться жизнью, если работа нравится, в этом нет ничего такого, что стоило бы стесняться. Просто сравни когда тебе говорят на собеседовании я знаю в совершенстве архитектуру пяти встраиваемых микроконтроллеров или я знаю в совершенстве два различных SOC (например R-Car и i.MX). У кого опыта и знаний больше?

Может я где-то не там тусуюсь, конечно, где нужно, но почему я знаю про незакрытые эмбеднутые вакансии как в Киеве, так и в Украине вообще, а человек, который их ищет, говорит, что их вообще нет? Ну или надо уточнять «эмбеднутые вакансии есть, но автомотив, умные дома и т.д. мне не интересны, мне вообще нифига не угодить и я просто хочу сидеть на форуме и ныть, что вакансий нет».

Похоже, что вообще с эмбеддерами что-то не так. У меня тут было много знакомых, сидели на пособии или работали за гроши в других местах, я им скидывал вакансии, которые всплывали, некоторые были настолько жирными, что я сам подумывал о смене с неплохой прибавкой. Все отказываются по самым разным причинам, так что становится ясно, что работа не нужна. Только один приехал из Торонто в Оттаву временно, чтобы попробовать, по деньгам он выигрывал ну просто по всем статьям. Недвижимость дешевле, страховки в два раза меньше, зарплата процентов на 30% больше чем на его прошлой работе. До работы можно пешком ходить. Ходил зудел два месяца, как его всё не устраивает и магазины тут в Оттаве не такие и ассортимент не тот и трава недостаточно зелёная и воздух слишком чистый, и скунсов много. Когда он уволился и уехал к себе назад в Торонто на пособие я с радости даже напился. И с тех пор зарёкся не помогать, даже если просят, никакие реферальские деньги этого не стоят. Список вакансий доступен для всех, нужно только его почитать, если человек не может его прочесть, ну его в сад. С другими ИТшниками как-то проще общаться. Ну это так, лирика.

я знаю про незакрытые эмбеднутые вакансии как в Киеве, так и в Украине вообще
варіантів уйма:

1. мала з/пл
2. погана карма у Кампаніі
3. честь работать в Кампаніі
4. дивні вимоги
5. нудний проект
6. ніразу не ембеддед
....

Прогеры в задницах мира должны страдать.
жизнь — єто боль
сначала думают
К сожалению не всегда. Вчера выкинул в мусорку плату, в которой не было ни одного тестпоинта для отладки. И плата не заработала. Хотя делалась далеко не аматорами.

Не. Сначала будут трахать прогеров. Авось найдется такой кто запустит.

да ладно, куча языков собираются дольше

Слюшай, я тебе один умный весчь скажю, только ты не обижайся.

Собираются не языки, собираются проекты.

Вообще скалу надо было бы давно выучить, но я никак не соберусь что-то. Наверно и не в этом «учебном году» — он уже весь расписан.

А вообще я имел ввиду простой факт, что один и тот же код, ну почти один и тот же, на С++ может компилироваться сильно по-разному.

Как бы да, но на SSD не припомню, чтоб именно C++ проекты меня напрягали сборкой, хотя и отднюдь не самые быстрые

Ну вот у меня поделие на ССД уже минут десять билдится и жужжит всеми вентиляторами. Но если локално билдить, а если с CI да под все платформы, да тесты прогнать — по-часика легко, и то это позитивный вариант.

CI — то уже отдельная песня, тормозить может всегда)

SSD — это вчерашний день. У меня 20Gb RAM диск, 8Gb — дисковый кеш, 4Gb убунте на еду. В такой конфигурации оно ещё живёт. Не знаю чем собираешь, но если проект для мейка допилить напильником для параллельной сборки, например на 8 потоков, то будет одуренно. Но всё равно билдится долго %)

8 потоков есть, вот RAM диска нету.

Я собственно это и имел ввиду когда писал, что билдится по разному. Во-первых разнообразные билд кешы и прочие ухищрения билдсистем. А во-вторых, то что небольшой рефакторинг может помочь уменьшить количество взаминых зависимостей и удешевить ребилды. Плюс шаблонную магию можно было бы теоретически использовать умеренно и с умом... можно, но не всегда :)

Хуже всего компилиться всякий автогенеренный код, например, switch на 1Мб исходников в одной функции и т.п. У меня на сборке всяких авто тестов типа CTS для OpenGL ES можно смело уходить домой — 8 часовой рабочий день считай закончен. Один файл из этого проекта компилировался около 35 минут, IMHO там вообще нет ни одного исходника, сделанного человеческим разумом, всё автогенеренное.

Си тоже. Зависит от компилятора и его ключей. А вот если компилятор у тебя с одними ключами по одному коду делает разный бинарный код, то убей такой компилятор — это зарождающийся ИИ и он тебя поработит.

Дык я много чего успеваю :)

чет казалось сконцентрироваться на чемто одном полезнее

Да я вот и сконцентрировалась, но людям же не угодить))

+1. Сам по Шидлту учился, отличная была книга для нвичков в свое время, но сейчас уже порядком устарела + новое издание оно какое-то сильно переработанное по сравненияю с тем, которым я пользовался.

Сейчас всем кто спрашивает Липмана советую.

И отличный был совет, спасибо :) Всё переписано под 11 стандарт, отдельно фичи 11го стандарта вынесены как в оглавлении, так и в книге отмечены.

Учить...кодить...учить...кодить...

1. youtube
2. dou.ua/...books-2015/?from=doufp#cc
3. Стажування при конторах
4. Впевнений, що ІТ це твоє, якщо не зміг нагуглити такого?
5. Вчи щось інакше, шарп, джава. Одним словом, подивись кількість джуніорських вакансій на плюсах(їх майже нема) і на інакших і приймай рішення.

Ну джуновских вакансий много только на FE, если уж быть откровенным. На С++ было много всяких трейни/интерн вакансий в последнее время.

доволі нахабна молодь пішла — все їм скинь, все їм дай і все їм зроби.
а самостійно пошукати ні?
на роботі потім теж будеш скидати колегам таску, щоб розжували, як все робити?

Что за вожжа вам под хвост попала? Человек всего лишь поинтересовался, по каким источникам учить. Вопрос оправдан — книг и видеоуроков по С++ сейчас много.

Это как с некачественными вопросами на SO.
Кто-то пишут «как мне сделать такое-то?» и вопрос закрывают.
А если приложить проделанную работу, код, свои выводы и т.д., то уже можно обсуждать и давать советы. Написал бы, что мол «вот я выбрал такие-то книги, но не могу определиться, с которой лучше начать, если мои знания в данный момент блаблабла», на него бы агрились меньше.

Для начала купить у меня книжку «Выучить с++ за 21 день» и не одну, а пару сотен по 20 баксов. Для ТС продам со скидкой.

Подписаться на комментарии