Я 12 лет, уже: оптоэлектронника, авионика, системы управления и навигации, цифровая обработка сигналов и разработка ASIC'ов, сейчас вроде бы углубился в сторону исследований в области САПР'ов.
То что Вы описывайте — это называется кустарщиной. В РФ (есть с чем сравнивать), к большому сожалению кустарщина процветает повально и чувствует себя вольготно, но это не значит, что это нормально. Меня периодами привлекают корпеть на СБИС и embedded — ну там алгоритм, который я выдумаю за 2-3 недели, потом будет еще прототипироваться и тестироваться на протяжении нескольких месяцев, и это только на нашей стороне — потом он улетает в заморские страны и там над ним продолжают измываться и это только на этапе разработки… ну где-то в общем только через год выпекается ASIC
Software Architect — любая программа имеет архитектуру и структуру, даже самая кривая, даже когда человек написал свой первый «Hello world.» Вопрос качества — это отдельный вопрос.
Действительно, ведь разработать архитектуру
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, world!" << endl;
return 0;
}
и вот такую — это одинаково просто, любой кто только-что написал Hellow World, следом и такое напишет. Зовите сюда Васю-программист с 3-мя классами церковно-приходской школы — он все умеет, он все нам сейчас быстро напишет.
Algorithm Engineer — блин, да без алгоритма нельзя написать ни одной строки кода. Любая строка кода — это часть алгоритма.
Кто разрабатывает алгоритмы и объясняет как их имплементировать? А имплементация алгоритмов != разработке алгоритмов и методов решения задач. И это будет не сортировка пузырьком :-) А что-нибудь что-то типа такого а на выходе из этого получить что-то типа такого
А кто такой программист, я написал выше, и вовсе это не резиновое понятие, у меня оно заняло одно предложение (длинное правда).
Ога, примерно как «колхозник — это работник агрокомплекса, который должен уметь сеять, жать, поливать, чинить трактор, селекционировать, доить коров и возить на своем пикапе свинок на фермерскую выставку».
Программист — это специалист, занимающийся разработкой программного обеспечения для различного рода вычислительно-операционных систем (С) Т.е. все, кто хоть как-то занят на производстве и сопровождении софта. В Оракле, например, таких погроммистов 100+ тысяч человек, вот только специализация и должности у каждого будет своя, будут там и Sofdtware Engineer, и QA Engineer, и Filed Application Engineer, и Solution Archtect, и Application Architect… тысячи их!
Понятие «новизны» кстати тоже… эээ… кодифицировано, т.к. используется в патентном праве и защите интеллектуальной собственности. Я глубоко сомневаюсь, что это физически возможно, каждую неделю по патенту получать.
А давайте вы не будете путать английское слово design и русское слово «дизайн», которые обозначают разные вещи?
А русское слово производно от английского и такое резениовое. Если Вы вкладывайте в слово «Дизайн» несколько отличный смысл от общеупотребимого (и кстати, стандартизированного на международному уровне еще в 50-60-ых года), то я даже хз:
Дизайн (от англ. design — проектировать, чертить, задумать, а также проект, план, рисунок) термин, обозначающий новый вид деятельности по проектированию предметного мира. Д. возник в начале 20 в. как реакция на стихийное формирование визуальных и функциональных свойств предметной среды. Д. разрабатывает образцы её рационального построения, соответствующие сложному функционированию современного общества.
Иногда под Д. понимают лишь одну из его областей — проектирование эстетических свойств промышленных изделий. Д., однако, решает более широкие социально-технические проблемы — функционирования производства, потребления, существования людей в предметной среде. Д. находится в особом отношении ко всем традиционным видам проектирования, разрешая затруднения, которые связаны с внедрением в жизнь конкретных людей и общества в целом новых предметных организаций, создающих неравновесную ситуацию в предметном мире.
Слово «Д.» применяется также для обозначения результата проектной деятельности (например, в таких словосочетаниях, как «Д. вещи», «Д. автомобиля»), причём в данном употреблении оно не всегда связывается с современной практикой и порой означает морфологию предметного мира, создаваемого человеком на разных стадиях развития общества. В этом смысле говорят о первобытном Д., о Д. 18 в. и т.п...
Эту простыню я из БСЭ скопипастил
Если ты проектируешь станок, в котором детали изготавливаются литьем, ты должен знать технологические ограничения литья, но ты не обязан сам обладать достаточной квалификацией, чтобы это все отлить (еще и потому, что это невозможно)
Хз, когда делаю всякие вундервафли, в процессе разработки всегда показываешь рабочим, как, чего и в какой последовательности надо собирать, на что обращать внимание, причем по всем участкам: механичка, сборка, монтаж, пайка, испытания. Если где-то что-то ломается — идешь (и летишь на самолет 8+ часов), смотришь, разбираешь ручками и исследуешь что не так. Это все этап ввода в производство.
Иногда не ту прошивку зальют или провода перепутают, а иногда вообще магия происходит — и этим уже не рабочие занимаются, а инженеры, а вот какие — зависит от того на каком этапе находится изделие, но на этапе разработке конструктора все сами ручками делают в специальных мастерских и специальных цехах — одинаково, что в РФ, что у буржуев, причем у буржуев инженеров на производстве куда больше занято, т.к. уровень автоматизации выше и рабочие в таких количествах как у нас уже и не нужны.
в станке стоит электродвигатель, его тоже инженер должен уметь собрать сам?
Инженер по электрическим машинами — Да, в обязательном порядке.
Навить проволоку?
И это тоже тоже, а еще паять (электротехники, электронщики), а еще точит, фрезеровать, резать (машиностроители, механики).
Не поверите, но по аналогии, например, врачи умеют делать уколы. Так ше и инженер — на своем участке работ он должен уметь делать все тоже что и рабочие.
А, главное, это же бесконечный маршрут
Если принцип разделения труда сильно не нарушен- то все норм. Вот как раз добыча руды — это горнодобывающая деятельность, а навить проволоку — электротехника, несколько разные области труда.
Это называется «программная инженерия». При этом тут в двух словосочетаниях перечислено две должности: Software Architect и Algorithm Engineer :-)
И еще
и при помощи набора инструментом (IDE, блокнот+компилятор, прочие редакторы чего-нибудь) выдать решение (ПО, код/скрипт)
Software Developer
Нет ни кодеров, ни инженеров-программистом
Угу, в 2018 году все напрочь забыли про разделение труда…
Есть программист
Программист — слишком резиновое слово если честно. Из того же ряда, что и работник, гражданин, человек…
По-русски, именно что изобрететатель, даже сухим официальным языком ГОСТР 57306-2016
3.1.3 инженерное дело (engineering): Профессиональная деятельность (3.1.7). связанная с применением систематического, строгого, количественного подхода для создания и применения информации о физических объектах, системах (3.1.22). процессах (3.1.17) и их взаимодействии в целях создания новых сущностей (3.1.4)
Тоже нет. Можно быть изобретателем и не быть инженером
Ога, изобретатели вечных двигателей, например. Шарлатаны их еще называют :-)
… а это и вовсе из другой области.
Тыц Разе что дизайн несколько более широкое понятие, которое включает в себя инженерную деятельность.
Вот прямо весь-весь? Отлить станину сконструированного станка — тоже?
Если инженер машиностроения, то да. В начале 2000-ых на машфаке студиоузы в обязательно порядке осваивали сварку, штамповку, литьё, фрезерование, резку и т.п. Вообще несколько проблематично проектировать и непосредственно управлять производственным процессом, когда не имеешь представление как это делается.
Инженер должен проводить экономический анализ и предоставлять технико-экономическое обоснование. Просто так от балды написать свой фреймворк — это не инженерия, — это велосипедостроение. Но велосипеды тоже иногда надо изобретать…
Математика и философия — самое главное… а остальное — по ситуации.
Таже начертательная геометрия штука крайне специфичная и очень узкоспециализированная дисциплина. Её уже давно массово не преподают — я только несколько человек знаю, кто её проходил, а уж погроммистам она точно не нужна. А так у большинства она уже давно заменена инженерной и компьютерной графикой (как было у меня, например), думаю на «Программной инженерии» компьютерную графику точно должны преподавать.
Электротехника отдельным курсом — тоже вещь узкоспециализированная, и очень толстая — например, у меня, когда получал еще первую вышку, её отдельным курсом не было, зато были другие: было сразу ТОРЭ, САУ, электроника и микросхемотехника, но не было никакой электромеханики, энергетики, электрических машин и т.п. как и общего курса электротехники.
Физика — фундаментальная и естественная наука (относится к 01.00.00 группе в классификаторе ВАК). Хз, с ней много вариантов, можно читать и отдельными курсами, или обобщенным (например, КСЕ, куда все естественнонаучные дисциплины можно включить), а можно включать в другие — физика нормально включается в математические курсы и в философию, хотя это и спорно. Но её все равно в подавляющем большинстве вузов (кроме физических специальностей и навороченных инженерных) читают отвратно — на уровне повторения школьного материала (профит стремится к 0). Но сейчас стали появляться смежные курсы, например,
Киберфизические системы
— туда все в кучу собирается: и физика, и электроника с электротехникой, и программирование, и еще чего-нибудь (хотя лучше бы её действительно изучать после физики, химии и электротехники).
Ну а экология — это вообще не техническая наука, а как дисциплина — она является общеобразовательной. Группа в калссификаторе — 03.00.00, т.е. биологические науки, а кодом технических специальностей является 05.00.00, список наук вот:
05.01.00 — инженерная и компьютерная графика
05.01.00 — инженерная геометрия и компьютерная графика
05.02.00 — машиностроение и машиноведение, мехатроника, роботы, сварка
05.03.00 — обработка материалов
05.04.00 — энергетическое машиностроение, атомные реакторы, турбомашины
05.05.00 — транспортное горное и строительное машиностроение
05.07.00 — авиационная техника, летательные аппараты
05.08.00 — кораблестроение.
05.09.00 — электротехника, светотехника.
05.11.00 — приборостроение
05.12.00 — радиотехника, радиолокация, радионавигация.
05.13.00 — информатика, системный анализ.
05.14.00 — энергетика, электростанции.
05.15.00 — разработка и эксплуатация полезных ископаемых
05.16.00 — металлургия и материаловедение, нанотехнологии
05.17.00 — химические технологии, полимеры и композиты
05.18.00 — пищевая промышленность, консервирование.
05.19.00 — лёгкая промышленность
05.20.00 — агроинженерные системы.
05.21.00 — деревообработка.
05.22.00 — транспорт, железные дороги, навигация, судовождение
05.23.00 — строительство
05.24.00 — геодезия
05.25.00 — документалистика
05.26.00 — безопасность труда
05.27.00 — электроника
А что Вы подразумевайте под "общеинженерными дисциплинами"? Это же синоним технических дисциплин: прикладная математика, метрология, информатика, системный анализ, компьютерная графика и даже документоведение, ну и т.д.
Не может быть такого шоб у них не было дисциплин по информатики и математики.
Хз. В Канаде приставка "инженер" подразумевает лицензию, большую зарплату и задачи несколько сложнее чем "напиши мне процедурку обхода графа в ширину сегодня к вечеру".
Это же не просто ярлыки, а конкретные квалификации и должности. Ну да, размыто немного — есть такое, но терминология устоявшаяся уже как с середины 70-ых годов (вообще насколько я слышал — пошло это с программы Аполлон и всяких натовских конференций)
Область ответственности Software Developer ограничена исключительно написанием кода в соответствии с заданными требованиями. В общем ему нужно концентрироваться исключительно на технологиях программирования. А вот границы ответственности Software Engineer куда больше — это тот, кто должен проектировать и разрабатывать новое решение, применяя инженерный подход и математические методы и одновременно с этим Software Engineer (в отличии от Software Developer) еще несет еще и юридическую ответственность, так что в ряде забугорных стран (например, в Канаде и в некоторых случаях в США, в зависимости от штата и отрасли) для того что бы занимать эту должность необходимо пройти лицензирование. В перспективе Software Engineer — личинка архитектора, а архитекторов кстати тоже много разных, я встречал Enterprise Architect, Solution Architect и Application Architect.
Разница между sd и se — как между строителем и инженером-строителем, или как между слесарем и инженером-конструктором. Улавливайте?
Также в эту замечательную кучку еще добавляется Algorithm Engineer — грубо, это тот, кто разрабатывает алгоритмы — человек-мостик между алгоритмами и программной инженерией, что уже подразумевает наличие академической квалификации (в Северной Америке для sd уже достаточно пройти курсы, se — подразумевает наличие степени бакалавра или хотябы специалиста, иногда еще и специальной лицензии, ну а ae — это как минимум магистр, хотя большинство из тех кого я видел имели PhD, хз насколько моя выборка репрезентативная).
Да и судя по офф. сайту доступ в Unity3D к исходам появляется в Pro версии.
Где там на офф сайте написано про исходники? Ни в одном публичном сервисном плане ничего не сказано про исходники: обычно всякие мелкие плюшки, типа профайлера, продвинутых систем частиц, реалтаймового освещения и теней, ч0рный скин эдитора и т.д. Зато у них написано:
Educational institutions, or those interested in either console development and/or source code licensing, should contact our sales team using our contact form.
В общем нужен исходный код — пишите в Спортлото и вам скажут цену
Юнити всегда был проприетарным и с закрытым исходным кодом более чем полностью. Unreal, конечно тоже не бесплатно дается — 5% роялти, но исходники изначально доступны, также как и у Ксенко (там особенности лицензионного соглашения). Максимум можете надыбать исходники UI, оберточки там всякие и т.д., но их ценность стремиться к 0 — движок под свои нужды все равно не сможете модифицировать, а это важно. Да даже понять, что твориться под капотом сложно — люди вон занимаются экспериментами, шоб выяснить как, например, работает трение, т.к. в доках нифига нет, исходников нет, и работает немного не так как должно бы.
Да и вообще Юнити Технолоджиес еще 9 лет назад объяснила свою политику и я после этого не слышал об изменении их политики насчет исходного кода, гугл тоже.
Может быть за кол-во поддерживаемых платформ.
С мультипалтформенностью сейчас итак особых проблем нет, только в деталях: Анреал хреново идет на мобилах, но он и не для этого, а для игр класса повыше, Ксенко пока имеет только экспериментальную поддержку Linux, но вроде итак работает. А так всегда есть к услугам, например, MonoGame, мультиплатформенный изначально с момента появления — 9 лет, еще и даром :-)
В любом случае, самое вкусное сочетание платформ: Windows, MacOS, XBOX, PS поддерживается многими.
А Юнити, по итогу, начинает драть бабки, например за то, что бы сменить стиль UI или что бы профайлер свой не писать. Просто порог входа у Unity3D низкий и первый раз бесплатно, а потом уже невозможно остановится… Ну и вылезли они вовремя (2005-2008 года) и удачно, успели обрасти лояльным коммьюнити до того как конкуренты появились.
Да и в Unity при этом довольно неплохая инфраструктура с CI, аналитикой и т.д. И вы всё же считаете, что Xenko выгоднее?
Толку от этой аналитики, если что с ней что без неё, игра будет грузится по 30 минут, да постоянно фризится и программист уже ничего с этим сделать не сможет? Например, у меня в той же Subnautica (Unity3D) сценка грузится в 3 раза дольше Elite (Cobra Engine) и DCS (у этих свой) — хотя они вообще-то помасштабнее и сложнее будут, чем первая. В Юнити достаточно написать скрипт где будут словари с энумераторами — и все, поимеем лишние аллокации и потерю производительности, чего не будет, наблюдаться в обычном C# коде под .NET, Mono и Xamarin. Там вообще много подводных таких камней. Ну вот, например, Обсидианы в итоге покупали исходники движка и серьезно их перелопачивали, но у них и бюджеты были не 1000 долларов, а один фиг, типичные фичи Юнити, типа долгой загрузки сцен и там есть.
И вы всё же считаете, что Xenko выгоднее?
Исходники, нормальный C# 7.0 (а не 2.0 не понятно как транслированный в C++ как в Юнити), на выходе проект Visual Studio со всеми редактируемыми ресурсами и со всеми плюшками современных IDE и компиляторов (в том числе и с раздельной компиляцией, которую придумали еще 30 лет назад), ну и заметно выше производительность скомпилированной игры, ну и т.д. (далее могут быть некоторые различия в поддерживаемых технологиях). Хз, конечно, посмотрим чего дальше будет, но пока он видеться перспективнее.
Мда. Сплеш — это пичалька, как люди на бесплатном Юнити живут, еще и игры делают и продают — загадка. Вообще профессиональные версии не из-за Splash Screen берут.
Профессиональная версия+ у Xenko идет со всеми исходниками и стоит 150 баксов в месяц. Профессиональная версия Unity3D стоит 125 баксов в месяц и никаких исходников, а за исходники у них там ценник просто конский — за такие деньги я и сам могу такой же говнодвижок разработать. Профессиональная версия Xenko за 75 баксов не имеет ограничений по оборотным средствам, Юнити+ за 35 баксов увы только до 200к баксов, а вообще она аналогична бесплатной версии Xenko.
Ну а у Unreal Engine идет со всеми потрохами, но надо будет отваливать по 5% роялти. Если по деньгам, то этого хватит что бы заплатить за 5 лет вперед за Unity Pro или Xenko Pro+. Впрочем у них есть еще дополнительные корпоративные планы, там уже свои ценники, но Unreal все же из другой весовой категории — более тяжелой.
Так что по цене Xenko сейчас получается самым дешёвым, если не страшно от сплэш-скрина и нет потребности модифицировать движок, то вообще бесплатно (еще раз напомню, шо за возможность модификации Unity3D ценник более чем конский. Ну и да Xenko это честный C# 7-версии, а Unity3D глючный IL2CPP, всмысле совсем глючный — уровня Mono образца эдак 2008-2012 годов, я вообще хз за что Unity деньги берут — за то что каждую версию меняют API и не могут осилить раздельную компиляцию в 2018 году?
Ну на самом деле с Васей то все правильно ИМХО, так и должно быть. А вот автопилот вертолета дядя Вася уже сделать не сможет.
А нейросеть в принципе итак уже может, например, идентифицировать систему. Вообще если капнуть глубже, то, например, цифровые адаптивные фильтры уже являются однослойным линейным персептроном, а они уже давно работают где только можно.
Вот только однослойный персептрон может решать только линейно-разделимы задачи. От многослойного персептрона можно ждать большего. Ну т.е. нейросеть сама по себе может быть регулятором — прям торчать в контуре управления также как и этот ПИД-регулятор: получать на вход ошибку и выдавать на выходе сигнал управления, я правда хз используется ли это где, но в цифровой фильтрации нейросети дают лучшие результаты чем обычные адаптивные КИХ-фильтры… только ресурсов дохрена требуется
Вот кстати как раз на это у меня заготовлены алгоритмы навигации (например, самонаведении ракет), только это уже будет отдельная статья, хз когда доберусь.
Ну тут получается двойно пример на самом деле.
Сначала в статье описывается регулятор углового положения «кагбэ в космосе» — там отлично работает ПД-регулятор и никакого шума в систему управления тут не вносится (вообще я думал по этому месту тоже пройтись, но меня закосячило, тем более это не совсем оправданное усложнение).
А И-звено там реально бесполезное. Если его внести, то будет такая ситуация: как только корабль приблизится к нужному углу — у него все равно будет присутствовать некоторая ошибка, которая будет асимптотически стремится к 0, ну т.е. уменьшаться то она будет, но только очень-очень медленно, совсем медленно. Возможно когда-нибудь, где-нибудь в бесконечно, ошибка и установится в 0.
Можно поиграться с И-составляющей и добиться таки достаточно заметного смещения, главное не поусердствовать — при слишком большой И — корабль просто разбалтывает нафиг.
Аналогичная ситуация будет с круиз-контролем на этом же пимере (сюда я его не впилил, хотя наверное стоит), но там еще веселее — вполне себе хватает П-составляющей.
Ну а конце система управления прирастает еще одним ПИД-регулятором, который всегда компенсирует скорость поворота, т.е. его задача выдавать момент сил, противоположенный вращению и вот если там подкрутить И-составляющую, то при определенном угле смещении оба регулятора будут выдавать одинаковые по модулю, но противоположенные по знакам угловые моменты, меняя И-составляющую у второго регулятора можем добиться разных смещения :-)
В Octave кстати тоже самое получается.
Вообще все от типа динамической системы зависит — надо что ли это как-то дополнить, я хз. Хорошо было бы придумать пример именно с ПИ-регулятором: зачем добавлять Д к П — хороший пример прям на поверхности, второй пример где только П-звено я не привел (а надо бы наверное, хз только куда его вставлять — перед поворотами или после? Ну и он не совсем честный — работает так, как буд-то бы у корабля движки находятся с 4-х сторон, соосно с центром масс, так шо я хз — стоит ли).
А вот чего не хватает, так это примера с ПИ — регулятором (был бы он, можно было бы сразу все впендюрить), но я чойт так с ходу и не придумал: если контроль поворота с помощью ПД и вектора скорости с помощью П(Д) — поверхности, то куда воткнуть именно И-регулирование (шоб сразу было очевидно его преимущество) я даже хз.
И еще раз о системах. Вообще особенность всех наших алгоритмов автоматического управления в том, что они отлично работают… на Земле, когда у нас полно всяких нелинейностей, диссипативных сил и прочих неприятных вещей. Скажем так, аэродинамическое трение таки очень помогает при управлении летальными аппаратами, а попадаешь в среду где диссипативных сил нет, зато есть здоровенные консервативные силы и поведение объектов заметно изменяется. Поэтому, если пройдетесь по космическим аркадкам, то обнаружите, что они в большинстве своем используют физику «а-ля автомобиль» или как буд-то объект движется внутри идеальной жидкости/газе (тоже кстати забавный прием получается), шо собственно и меня подтолкнуло к написанию этой статьи: отличный сферовакуумный пример, на котором можно уже дальше самому поэкспериментировать.
Ну в Москве чувак пришедший с Бауманки и умеющий записывать и решать систему линейных уравнений в матричном виде — таки не редкость, с комплексными числами тоже не все дружат. Или, например, как выяснилось, шо не все мифишники в курсе, что масса Лоренц-инвариантна, хотя казалось бы. Это все конечно не страшно на самом деле, но дисперсия по процессу подготовки даже в пределах одного факультета очень большая.
Я вот, например, когда учился — на нашем отделении решили сделать финт ушами: увеличили число часов по матанализу и включили в него ТФКП, соответственно саму ТФКП тоже ликвидировали, но суммарное число часов не изменилось… только забыли об этом сказать преподу, студентов тоже никто не предупредили — ну нет ТФКП и нет. Стандартный матан таким макаром очень быстро кончился и препод не зная чем себя занять принялся за углубенное изучение интеграла Лебега, интеграла Интеграл Курцвейля-Хенстока, потом когда и это кончилось — принялся за функан и дифгем. Но ТФКП в итоге не было — об этом узнали только на госниках :-)
А в Москве так вообще очень странная ситуация: конкуренция очень высокая — только не со стороны выпускников, а наоборот — со стороны работодателей и в тоже время работодатели еще и носом воротят.
В общем как мне всегда казалось специалистов мало, даже очень мало. А сейчас вон ADAS во вс щели полезла (только вот я уже желающими запилить свой автопилот для автомобиля пообщался — с разными конторами… и по-моему они вообще плохо понимают куда ввязались и кто им нужен)
Ну смотрите. Шум в играх могу добавлять искусственно — например, та же стрельба в играх. Весь вопрос нужно это как элемент геймплея или нет.
Другой пример уже реальный — мультиплеер. Вот там будут и большие задержки (пинг 100 мс — нормальное явления) и будут потерянные пакеты — некоторая информация будет теряться. Собственно каждый игрок играет в мультиплеере играет в свою игру, а уж потом их игры синхронизируются. Вот это уже реальная проблема, особенно для физики.
Вот есть такая игра — Space Engeneers, хз как сейчас, но когда я в неё играл (3-4 года назад), при игре по мультиплееру физика в игре начинала сходить с сума: решил пройтись по кораблю во время движения и оказался в стене, например :-) Вот там бы точно не помешал бы прикрученный к каждому игроку наблюдатель (хз, может они его и прикручивали — я хз). Вот в мультиплеере есть де разгуляться — там и задача оценивания при неполной информации, и предсказания.
То что Вы описывайте — это называется кустарщиной. В РФ (есть с чем сравнивать), к большому сожалению кустарщина процветает повально и чувствует себя вольготно, но это не значит, что это нормально. Меня периодами привлекают корпеть на СБИС и embedded — ну там алгоритм, который я выдумаю за 2-3 недели, потом будет еще прототипироваться и тестироваться на протяжении нескольких месяцев, и это только на нашей стороне — потом он улетает в заморские страны и там над ним продолжают измываться и это только на этапе разработки… ну где-то в общем только через год выпекается ASIC
Действительно, ведь разработать архитектуру
и вот такую — это одинаково просто, любой кто только-что написал Hellow World, следом и такое напишет. Зовите сюда Васю-программист с 3-мя классами церковно-приходской школы — он все умеет, он все нам сейчас быстро напишет.
Кто разрабатывает алгоритмы и объясняет как их имплементировать? А имплементация алгоритмов != разработке алгоритмов и методов решения задач. И это будет не сортировка пузырьком :-) А что-нибудь что-то типа такого а на выходе из этого получить что-то типа такого
Ога, примерно как «колхозник — это работник агрокомплекса, который должен уметь сеять, жать, поливать, чинить трактор, селекционировать, доить коров и возить на своем пикапе свинок на фермерскую выставку».
Программист — это специалист, занимающийся разработкой программного обеспечения для различного рода вычислительно-операционных систем (С) Т.е. все, кто хоть как-то занят на производстве и сопровождении софта. В Оракле, например, таких погроммистов 100+ тысяч человек, вот только специализация и должности у каждого будет своя, будут там и Sofdtware Engineer, и QA Engineer, и Filed Application Engineer, и Solution Archtect, и Application Architect… тысячи их!
Понятие «новизны» кстати тоже… эээ… кодифицировано, т.к. используется в патентном праве и защите интеллектуальной собственности. Я глубоко сомневаюсь, что это физически возможно, каждую неделю по патенту получать.
А русское слово производно от английского и такое резениовое. Если Вы вкладывайте в слово «Дизайн» несколько отличный смысл от общеупотребимого (и кстати, стандартизированного на международному уровне еще в 50-60-ых года), то я даже хз:
Эту простыню я из БСЭ скопипастил
Хз, когда делаю всякие вундервафли, в процессе разработки всегда показываешь рабочим, как, чего и в какой последовательности надо собирать, на что обращать внимание, причем по всем участкам: механичка, сборка, монтаж, пайка, испытания. Если где-то что-то ломается — идешь (и летишь на самолет 8+ часов), смотришь, разбираешь ручками и исследуешь что не так. Это все этап ввода в производство.
Иногда не ту прошивку зальют или провода перепутают, а иногда вообще магия происходит — и этим уже не рабочие занимаются, а инженеры, а вот какие — зависит от того на каком этапе находится изделие, но на этапе разработке конструктора все сами ручками делают в специальных мастерских и специальных цехах — одинаково, что в РФ, что у буржуев, причем у буржуев инженеров на производстве куда больше занято, т.к. уровень автоматизации выше и рабочие в таких количествах как у нас уже и не нужны.
Инженер по электрическим машинами — Да, в обязательном порядке.
И это тоже тоже, а еще паять (электротехники, электронщики), а еще точит, фрезеровать, резать (машиностроители, механики).
Не поверите, но по аналогии, например, врачи умеют делать уколы. Так ше и инженер — на своем участке работ он должен уметь делать все тоже что и рабочие.
Если принцип разделения труда сильно не нарушен- то все норм. Вот как раз добыча руды — это горнодобывающая деятельность, а навить проволоку — электротехника, несколько разные области труда.
Это называется «программная инженерия». При этом тут в двух словосочетаниях перечислено две должности: Software Architect и Algorithm Engineer :-)
И еще
Software Developer
Угу, в 2018 году все напрочь забыли про разделение труда…
Программист — слишком резиновое слово если честно. Из того же ряда, что и работник, гражданин, человек…
По-русски, именно что изобрететатель, даже сухим официальным языком ГОСТР 57306-2016
Ога, изобретатели вечных двигателей, например. Шарлатаны их еще называют :-)
Тыц Разе что дизайн несколько более широкое понятие, которое включает в себя инженерную деятельность.
Если инженер машиностроения, то да. В начале 2000-ых на машфаке студиоузы в обязательно порядке осваивали сварку, штамповку, литьё, фрезерование, резку и т.п. Вообще несколько проблематично проектировать и непосредственно управлять производственным процессом, когда не имеешь представление как это делается.
Таже начертательная геометрия штука крайне специфичная и очень узкоспециализированная дисциплина. Её уже давно массово не преподают — я только несколько человек знаю, кто её проходил, а уж погроммистам она точно не нужна. А так у большинства она уже давно заменена инженерной и компьютерной графикой (как было у меня, например), думаю на «Программной инженерии» компьютерную графику точно должны преподавать.
Электротехника отдельным курсом — тоже вещь узкоспециализированная, и очень толстая — например, у меня, когда получал еще первую вышку, её отдельным курсом не было, зато были другие: было сразу ТОРЭ, САУ, электроника и микросхемотехника, но не было никакой электромеханики, энергетики, электрических машин и т.п. как и общего курса электротехники.
Физика — фундаментальная и естественная наука (относится к 01.00.00 группе в классификаторе ВАК). Хз, с ней много вариантов, можно читать и отдельными курсами, или обобщенным (например, КСЕ, куда все естественнонаучные дисциплины можно включить), а можно включать в другие — физика нормально включается в математические курсы и в философию, хотя это и спорно. Но её все равно в подавляющем большинстве вузов (кроме физических специальностей и навороченных инженерных) читают отвратно — на уровне повторения школьного материала (профит стремится к 0). Но сейчас стали появляться смежные курсы, например, — туда все в кучу собирается: и физика, и электроника с электротехникой, и программирование, и еще чего-нибудь (хотя лучше бы её действительно изучать после физики, химии и электротехники).
Ну а экология — это вообще не техническая наука, а как дисциплина — она является общеобразовательной. Группа в калссификаторе — 03.00.00, т.е. биологические науки, а кодом технических специальностей является 05.00.00, список наук вот:
05.01.00 — инженерная и компьютерная графика
05.01.00 — инженерная геометрия и компьютерная графика
05.02.00 — машиностроение и машиноведение, мехатроника, роботы, сварка
05.03.00 — обработка материалов
05.04.00 — энергетическое машиностроение, атомные реакторы, турбомашины
05.05.00 — транспортное горное и строительное машиностроение
05.07.00 — авиационная техника, летательные аппараты
05.08.00 — кораблестроение.
05.09.00 — электротехника, светотехника.
05.11.00 — приборостроение
05.12.00 — радиотехника, радиолокация, радионавигация.
05.13.00 — информатика, системный анализ.
05.14.00 — энергетика, электростанции.
05.15.00 — разработка и эксплуатация полезных ископаемых
05.16.00 — металлургия и материаловедение, нанотехнологии
05.17.00 — химические технологии, полимеры и композиты
05.18.00 — пищевая промышленность, консервирование.
05.19.00 — лёгкая промышленность
05.20.00 — агроинженерные системы.
05.21.00 — деревообработка.
05.22.00 — транспорт, железные дороги, навигация, судовождение
05.23.00 — строительство
05.24.00 — геодезия
05.25.00 — документалистика
05.26.00 — безопасность труда
05.27.00 — электроника
А что Вы подразумевайте под "общеинженерными дисциплинами"? Это же синоним технических дисциплин: прикладная математика, метрология, информатика, системный анализ, компьютерная графика и даже документоведение, ну и т.д.
Не может быть такого шоб у них не было дисциплин по информатики и математики.
Хз. В Канаде приставка "инженер" подразумевает лицензию, большую зарплату и задачи несколько сложнее чем "напиши мне процедурку обхода графа в ширину сегодня к вечеру".
Это же не просто ярлыки, а конкретные квалификации и должности. Ну да, размыто немного — есть такое, но терминология устоявшаяся уже как с середины 70-ых годов (вообще насколько я слышал — пошло это с программы Аполлон и всяких натовских конференций)
Это не титулы. Это уровни квалификации.
Область ответственности Software Developer ограничена исключительно написанием кода в соответствии с заданными требованиями. В общем ему нужно концентрироваться исключительно на технологиях программирования. А вот границы ответственности Software Engineer куда больше — это тот, кто должен проектировать и разрабатывать новое решение, применяя инженерный подход и математические методы и одновременно с этим Software Engineer (в отличии от Software Developer) еще несет еще и юридическую ответственность, так что в ряде забугорных стран (например, в Канаде и в некоторых случаях в США, в зависимости от штата и отрасли) для того что бы занимать эту должность необходимо пройти лицензирование. В перспективе Software Engineer — личинка архитектора, а архитекторов кстати тоже много разных, я встречал Enterprise Architect, Solution Architect и Application Architect.
Разница между sd и se — как между строителем и инженером-строителем, или как между слесарем и инженером-конструктором. Улавливайте?
Также в эту замечательную кучку еще добавляется Algorithm Engineer — грубо, это тот, кто разрабатывает алгоритмы — человек-мостик между алгоритмами и программной инженерией, что уже подразумевает наличие академической квалификации (в Северной Америке для sd уже достаточно пройти курсы, se — подразумевает наличие степени бакалавра или хотябы специалиста, иногда еще и специальной лицензии, ну а ae — это как минимум магистр, хотя большинство из тех кого я видел имели PhD, хз насколько моя выборка репрезентативная).
Где там на офф сайте написано про исходники? Ни в одном публичном сервисном плане ничего не сказано про исходники: обычно всякие мелкие плюшки, типа профайлера, продвинутых систем частиц, реалтаймового освещения и теней, ч0рный скин эдитора и т.д. Зато у них написано:
В общем нужен исходный код — пишите в Спортлото и вам скажут цену
Юнити всегда был проприетарным и с закрытым исходным кодом более чем полностью. Unreal, конечно тоже не бесплатно дается — 5% роялти, но исходники изначально доступны, также как и у Ксенко (там особенности лицензионного соглашения). Максимум можете надыбать исходники UI, оберточки там всякие и т.д., но их ценность стремиться к 0 — движок под свои нужды все равно не сможете модифицировать, а это важно. Да даже понять, что твориться под капотом сложно — люди вон занимаются экспериментами, шоб выяснить как, например, работает трение, т.к. в доках нифига нет, исходников нет, и работает немного не так как должно бы.
Да и вообще Юнити Технолоджиес еще 9 лет назад объяснила свою политику и я после этого не слышал об изменении их политики насчет исходного кода, гугл тоже.
С мультипалтформенностью сейчас итак особых проблем нет, только в деталях: Анреал хреново идет на мобилах, но он и не для этого, а для игр класса повыше, Ксенко пока имеет только экспериментальную поддержку Linux, но вроде итак работает. А так всегда есть к услугам, например, MonoGame, мультиплатформенный изначально с момента появления — 9 лет, еще и даром :-)
В любом случае, самое вкусное сочетание платформ: Windows, MacOS, XBOX, PS поддерживается многими.
А Юнити, по итогу, начинает драть бабки, например за то, что бы сменить стиль UI или что бы профайлер свой не писать. Просто порог входа у Unity3D низкий и первый раз бесплатно, а потом уже невозможно остановится… Ну и вылезли они вовремя (2005-2008 года) и удачно, успели обрасти лояльным коммьюнити до того как конкуренты появились.
Толку от этой аналитики, если что с ней что без неё, игра будет грузится по 30 минут, да постоянно фризится и программист уже ничего с этим сделать не сможет? Например, у меня в той же Subnautica (Unity3D) сценка грузится в 3 раза дольше Elite (Cobra Engine) и DCS (у этих свой) — хотя они вообще-то помасштабнее и сложнее будут, чем первая. В Юнити достаточно написать скрипт где будут словари с энумераторами — и все, поимеем лишние аллокации и потерю производительности, чего не будет, наблюдаться в обычном C# коде под .NET, Mono и Xamarin. Там вообще много подводных таких камней. Ну вот, например, Обсидианы в итоге покупали исходники движка и серьезно их перелопачивали, но у них и бюджеты были не 1000 долларов, а один фиг, типичные фичи Юнити, типа долгой загрузки сцен и там есть.
Исходники, нормальный C# 7.0 (а не 2.0 не понятно как транслированный в C++ как в Юнити), на выходе проект Visual Studio со всеми редактируемыми ресурсами и со всеми плюшками современных IDE и компиляторов (в том числе и с раздельной компиляцией, которую придумали еще 30 лет назад), ну и заметно выше производительность скомпилированной игры, ну и т.д. (далее могут быть некоторые различия в поддерживаемых технологиях). Хз, конечно, посмотрим чего дальше будет, но пока он видеться перспективнее.
Профессиональная версия+ у Xenko идет со всеми исходниками и стоит 150 баксов в месяц. Профессиональная версия Unity3D стоит 125 баксов в месяц и никаких исходников, а за исходники у них там ценник просто конский — за такие деньги я и сам могу такой же говнодвижок разработать. Профессиональная версия Xenko за 75 баксов не имеет ограничений по оборотным средствам, Юнити+ за 35 баксов увы только до 200к баксов, а вообще она аналогична бесплатной версии Xenko.
Ну а у Unreal Engine идет со всеми потрохами, но надо будет отваливать по 5% роялти. Если по деньгам, то этого хватит что бы заплатить за 5 лет вперед за Unity Pro или Xenko Pro+. Впрочем у них есть еще дополнительные корпоративные планы, там уже свои ценники, но Unreal все же из другой весовой категории — более тяжелой.
Так что по цене Xenko сейчас получается самым дешёвым, если не страшно от сплэш-скрина и нет потребности модифицировать движок, то вообще бесплатно (еще раз напомню, шо за возможность модификации Unity3D ценник более чем конский. Ну и да Xenko это честный C# 7-версии, а Unity3D глючный IL2CPP, всмысле совсем глючный — уровня Mono образца эдак 2008-2012 годов, я вообще хз за что Unity деньги берут — за то что каждую версию меняют API и не могут осилить раздельную компиляцию в 2018 году?
И давно бесплатно — это много денег? :-)
Xenko Game Engine — там на выходе обычный .NET solution
Круто. В 2017 году авторы юнити узнали про существование раздельной компиляции… и все равно сделали это через одно место.
А нейросеть в принципе итак уже может, например, идентифицировать систему. Вообще если капнуть глубже, то, например, цифровые адаптивные фильтры уже являются однослойным линейным персептроном, а они уже давно работают где только можно.
Вот только однослойный персептрон может решать только линейно-разделимы задачи. От многослойного персептрона можно ждать большего. Ну т.е. нейросеть сама по себе может быть регулятором — прям торчать в контуре управления также как и этот ПИД-регулятор: получать на вход ошибку и выдавать на выходе сигнал управления, я правда хз используется ли это где, но в цифровой фильтрации нейросети дают лучшие результаты чем обычные адаптивные КИХ-фильтры… только ресурсов дохрена требуется
Сначала в статье описывается регулятор углового положения «кагбэ в космосе» — там отлично работает ПД-регулятор и никакого шума в систему управления тут не вносится (вообще я думал по этому месту тоже пройтись, но меня закосячило, тем более это не совсем оправданное усложнение).
А И-звено там реально бесполезное. Если его внести, то будет такая ситуация: как только корабль приблизится к нужному углу — у него все равно будет присутствовать некоторая ошибка, которая будет асимптотически стремится к 0, ну т.е. уменьшаться то она будет, но только очень-очень медленно, совсем медленно. Возможно когда-нибудь, где-нибудь в бесконечно, ошибка и установится в 0.
Можно поиграться с И-составляющей и добиться таки достаточно заметного смещения, главное не поусердствовать — при слишком большой И — корабль просто разбалтывает нафиг.
Аналогичная ситуация будет с круиз-контролем на этом же пимере (сюда я его не впилил, хотя наверное стоит), но там еще веселее — вполне себе хватает П-составляющей.
Ну а конце система управления прирастает еще одним ПИД-регулятором, который всегда компенсирует скорость поворота, т.е. его задача выдавать момент сил, противоположенный вращению и вот если там подкрутить И-составляющую, то при определенном угле смещении оба регулятора будут выдавать одинаковые по модулю, но противоположенные по знакам угловые моменты, меняя И-составляющую у второго регулятора можем добиться разных смещения :-)
В Octave кстати тоже самое получается.
Вообще все от типа динамической системы зависит — надо что ли это как-то дополнить, я хз. Хорошо было бы придумать пример именно с ПИ-регулятором: зачем добавлять Д к П — хороший пример прям на поверхности, второй пример где только П-звено я не привел (а надо бы наверное, хз только куда его вставлять — перед поворотами или после? Ну и он не совсем честный — работает так, как буд-то бы у корабля движки находятся с 4-х сторон, соосно с центром масс, так шо я хз — стоит ли).
А вот чего не хватает, так это примера с ПИ — регулятором (был бы он, можно было бы сразу все впендюрить), но я чойт так с ходу и не придумал: если контроль поворота с помощью ПД и вектора скорости с помощью П(Д) — поверхности, то куда воткнуть именно И-регулирование (шоб сразу было очевидно его преимущество) я даже хз.
И еще раз о системах. Вообще особенность всех наших алгоритмов автоматического управления в том, что они отлично работают… на Земле, когда у нас полно всяких нелинейностей, диссипативных сил и прочих неприятных вещей. Скажем так, аэродинамическое трение таки очень помогает при управлении летальными аппаратами, а попадаешь в среду где диссипативных сил нет, зато есть здоровенные консервативные силы и поведение объектов заметно изменяется. Поэтому, если пройдетесь по космическим аркадкам, то обнаружите, что они в большинстве своем используют физику «а-ля автомобиль» или как буд-то объект движется внутри идеальной жидкости/газе (тоже кстати забавный прием получается), шо собственно и меня подтолкнуло к написанию этой статьи: отличный сферовакуумный пример, на котором можно уже дальше самому поэкспериментировать.
Я вот, например, когда учился — на нашем отделении решили сделать финт ушами: увеличили число часов по матанализу и включили в него ТФКП, соответственно саму ТФКП тоже ликвидировали, но суммарное число часов не изменилось… только забыли об этом сказать преподу, студентов тоже никто не предупредили — ну нет ТФКП и нет. Стандартный матан таким макаром очень быстро кончился и препод не зная чем себя занять принялся за углубенное изучение интеграла Лебега, интеграла Интеграл Курцвейля-Хенстока, потом когда и это кончилось — принялся за функан и дифгем. Но ТФКП в итоге не было — об этом узнали только на госниках :-)
А в Москве так вообще очень странная ситуация: конкуренция очень высокая — только не со стороны выпускников, а наоборот — со стороны работодателей и в тоже время работодатели еще и носом воротят.
В общем как мне всегда казалось специалистов мало, даже очень мало. А сейчас вон ADAS во вс щели полезла (только вот я уже желающими запилить свой автопилот для автомобиля пообщался — с разными конторами… и по-моему они вообще плохо понимают куда ввязались и кто им нужен)
Другой пример уже реальный — мультиплеер. Вот там будут и большие задержки (пинг 100 мс — нормальное явления) и будут потерянные пакеты — некоторая информация будет теряться. Собственно каждый игрок играет в мультиплеере играет в свою игру, а уж потом их игры синхронизируются. Вот это уже реальная проблема, особенно для физики.
Вот есть такая игра — Space Engeneers, хз как сейчас, но когда я в неё играл (3-4 года назад), при игре по мультиплееру физика в игре начинала сходить с сума: решил пройтись по кораблю во время движения и оказался в стене, например :-) Вот там бы точно не помешал бы прикрученный к каждому игроку наблюдатель (хз, может они его и прикручивали — я хз). Вот в мультиплеере есть де разгуляться — там и задача оценивания при неполной информации, и предсказания.