Как стать автором
Обновить

Комментарии 787

НЛО прилетело и опубликовало эту надпись здесь
А я немного помоложе, 30 лет. С 5 класса юзал Север (аналог Спектрума от местного завода) на бейсике, потом почитывал про ассемблер (хоть и не писал на нём ничего), в 10 классе накидал rat на delphi, потом много лет си, моделирование всякого научного, недавно java.
Надеюсь, у меня ещё есть время! =)
С 5 класса юзал Север (аналог Спектрума от местного завода)
У меня местный аналог назывался «Дельта-С», но начинал я с МК-61, за которым пришлось ехать в кольвань, поому что в Новосибирске в магазинах его «не было».
Любопытно, что «Акционер» с «полуобучаемыми» компьютерными игроками я тоже делал.

А какой год? У меня отец сам собирал спектрум, комплектующие покупал в Новосибирске (жили мы на Алтае). Это были года где-то 90-92, если не ошибаюсь

А какой год?
87-88, если я правильно помню. (Но, похоже, помню неправильно: Википедия говорит, что он выпускался с 1989 по 1994.)
Нет, нас, таких, полно.
Согласен :). Полно.
… тогда я говорю себе строго – «Терпеть!» …
Нас много)
Да, в сях контекстно-зависимый синтаксис указателей со звездочкой — это феерический просчет проектировщиков. В том же паскале указатель и разыменовывание определяется по положению слева-справа от идентификатора. Уже одно это помогает легко читать код вместо того, чтобы помнить или выяснять какого типа переменная и смотреть где мы находимся — в части определения или в части выражения.

Удивительно, что этот просчет сделан в языке, в котором указатели являются самой солью языка.
Для понимания нужно вспомнить историю Си. Пара аспирантов и пара студентов делала структурный ассемблер для PDP-7. Машина была словной (16 битные слова), а язык безтиповым и назывался Би.

От PDP-7 в языке Си остались такие конструкции как эквивалентность arr[i] и *(arr+i). На безтиповом языке для словной машине это было просто сложение.

Когда они решили перейти на PDP-11, безтиповым языком было уже не обойтись. PDP-11 была словной машиной с адресацией до байта. То есть по четном адресу можно было прочитать и слово и байт, а по нечетному — только байт. Поэтому им пришлось вводить типы. Ну и сменить название языка на Си.

И тогда, для ускорения переделок, была придумана гениальная идея. Вместо описания типа — описывать, какими преобразованиями переменная приводится к базовому типу. int **pp означает, что если дважды разыменовать pp, то получиться int. Этих хаком они упростили себе переделку компилятора,

От PDP-11 в Си осталась конструкция *dst++ = *src++, которая транслировалась в одну команду mov (R5)++, (R3)++

Если бы вы начали изучение Си с The C Programming Language, то там довольно явно рассказывается об этом…

Ну а первые впечатления от Си (1984 год): вау, какой красивый ассемблер! Теперь можно писать код на ЯВУ и понимать, какие команды будут исполняться! Особенность компиляции (из.с в .s, а уж потом в .obj) этому только помогали.

Но да, к 1990ому году пришли иные машины и иные компиляторы. И Си перестал восприниматься ассемблером конкретной машины. А хак с заменой описания переменных на описание преобразования в базовые типы — остался.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
В VAX то же самое. А еще есть трехадресные команды.
VAX — это развитие идей PDP-11 на 32битную архитектуру. Насколько я помню, с ортогональностью системы команд там все хорошо было. А вот и картинка


image
Угу, только тут нет адресации через 15й регистр в теле команды, когда между двумя операндами зашарашивается константа, а сам регистр надо соответственно инкрементировать, и выбрать следующие параметры загодя нельзя.
НЛО прилетело и опубликовало эту надпись здесь
Система не совершенна. Проблема — в переменной длине команд, что затрудняет конвейеризацию.
НЛО прилетело и опубликовало эту надпись здесь
Это технически красивое решение, но представим, что нам надо оптимизировать выборку и обработку данных. В каком-нибудь x86 мы читая команду, знаем все про ее аргументы. А здесь — прочли байт, распарсили — ага, это режим 5, берем регистр. А то — смотрим, ага адресация через счетчик команд, надо прочесть из памяти, сам счетчик через АЛУ прогнать и т.д.
Синтаксис ассемблера PDP-11 не подразумевает двух плюсов :) и инструкция MOV (R5)+,(R3)+
Прошу прощения, забыл за 25 лет, что не работал на PDP-11/
+1
тоже жизнь началась лет с 12 с Спекртума и хардкора на ассемблере :) А к 40 года, пальцев не хватает на теле что бы перечислить на чем только не писал %)
А на чем еще тоько предстоит...:)))
Напомнило:
видео

Это прелестно!
Супер!
Воистину!
мне тоже скоро 40, тоже первый комп был Микроша, вселенная дает мне знаки? или издевается? )) спасибо за статью
НЛО прилетело и опубликовало эту надпись здесь
Просто мы одного поколения, а в наше время сегодняшной бездны товаров не было. Поэтому у нас есть (были) одинаковые вещи, которые нас сближают. К сожалению, у современных детей даже в одной стране таких точек соприкосновения почти нет. Все очень сегментировано и находится уже в области нематериального: общелюбимые компьютерные игры, сайты, сериалы. Даже материальных гаджетов сейчас так много моделей, что встретиь случайно в жизни любителя такого же очень сложно.
я вас на 10 лет старше и могу сказать то же самое. :-) Слишком много у вас разного. Тот же экзотический МК-52 на картинке вместо массовогоБ3-21 (или БЗ-34 на пару лет позже).

Скажите приверженцам iPhone :)

Зато на Андроиде целый зоопарк производителей и десятки тысяч моделей — от откровенного подвала до А-эшелона.
А у меня был хардкор — отец собрал из спёртых с работы микросхем (в продаже из просто не было) «Микро-80» по схеме из журнала «Радио» за 83 год. Причём проц там был тот, что удалось найти — Z80(он был потом в «Спектрумах»). А поскольку Z80 был по системе команд не на 100% совместим с i8080, под который был интерпретатор Бейсика для Микро-80, то Бейсик не работал. В итоге моё программирования началось с ассемблера, точнее с машинных кодов. ))
Было это в 87 или 88 году… (я лет на 5 Вас старше). Но на «Микроше»(Схема «Радио 86РК») тоже отметился — несколько моих игрушек были успешно мною проданы в сеть игровых салонов города (Тольятти) )))
Прошу прощения за многословность — ностальгия… )
Я кстати тоже заглядывался на эту схему из журнала Радио. В итоге тоже программировал на машинных кодах, но чтобы сделать готовые игры это крутизна. Как я понимаю по профилю в Хабре в данный момент у вас JAVA?
Да. Сейчас в основном всё что связано с Java. По большей части серверная. Заглядываюсь на Android — переползти на него. Времени не хватает, но процесс идёт — сделаю несколько конкурентных приложений в Маркет и поползу дальше.
А мне судьба предоставила сначала 1С, теперь вот полностью надоело, с прошлого года изучаю JAVA и Android studio, есть один проект, небольшая игра.
Сама по себе Java вызывает восхищение и сожаление, что раньше не взялся за нее. Планирую в этом году полностью уйти с 1С, пока что только по финансовым соображениям работаю.
У меня совсем недавно был застой — работал с продуктом Documentum (хрень на основе Java — почти j2ee) — работал на нём порядка 7 лет. Монструозная штука «в себе», так и не подружился с ним до конца ((
Одно время даже думал что всё — кончился прогер во мне — пора куда-то сваливать. Потом начал пилить андроид, но без опыта не берут — понятно. А год назад удалось слезть с документума, подтянул современные скилы и снова полон сил )
Интересно, думал только в 1С такое бывает…
А у меня хватило терпения на 17 лет, наверное помогало то, что занимался всегда новыми проектами. Теперь вот не могу нарадоваться Java, посмотрим как дальше пойдет, учу ускоренными темпами по ночам и на работе днем и в машине вебинары, не смотря на 2х детей. Но главное что нравится.
Не холивара ради, но очень хочется узнать чем Java прельстила по сравнению с 1С?
Ожидал этого вопроса, вот почему я начал учить Java:

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

2.В 1С большие ограничения по дизайну, а в последнее время я сильно проникся material design разрабатываю мобильные приложения. Меня сильно обижает нехотение 1С предоставить возможность кастомизации (сами они предоставить нормальный дизайн не могут)

3.Сам внутрениий язык 1С не несет никакой индивидуальности, не развивается в сторону масштабируемости, оставаясь на уровне версии 7 (новые операторы работы с бинарными данными или асинхронные или другие дополнения не в счет)

4.Еще о языке 1С, он очень грязный и учит программиста халявности. Нет типизации, нет case-sensitive, нет инициализации. Все эти вещи может и снижают порого вхождения, но рождают ленивых (в плохом смысле) программистов и урезают напрочь охоту думать (об этом была статья на инфостарте)

5.Нет ООП, тут можно возразить, что он не нужен, или что он уже частично есть, но это не так! Инкапсуляция? Наследие? Полиморфизм? Когда я изучал Java я смеялся и плакал. Сколько кода можно было написать под другому, какая удобная была бы поддержка таких решений (написанных с ООП)!

6.Нет нормального IDE. Да разрабатывается 1c development tools, но он еще далек от того, чтобы им серьезно пользоваться, в текущий IDE ужасен, он заставляет вас печатать как печатной машинке, ничего не подсказывает и застрял в 98-м году.

7.Проприетарный формат решений / баз данных 1С, решения закрыты в бинарном формате, и это во время когда уже сам Microsoft перешел на xml? Да в 1С зашевелились и начали делать выгрузку, но этого мало и с большим опозданием.

8.В 1С постоянно что-то может вылететь и не работать. в некоторых случаях вы можете поработать напильником, в других случаях вы ничего не можете сделать, так как платформа закрыта и есть только один официальный форум (partnerts.v8.1c.ru) и он тоже закрыт для обычных людей, есть и bugboard но он тоже закрыт от обычных людей), но все эти сайты только если вы из СНГ, а для остальных все еще хуже.
Клиенты потеряли лицензии, 1С сервер у клиента упал, соединения не закрываются сами, веб-клиент работает недекватно, мобильная платформа рандомно падает и т.д. Все это требует вмешательства 1С и ожидания решения. Нет стабильности.

9.Любое ваше решение в 1С будет всего лишь надстройкой для 1С Предприятия, вы не можете считать себя программистом в полной мере и считать продукт своим. Он наполовину собственность фирмы 1С (давайте будет честными)

10.Ваша карьера остановится на 1С, вы не сможете найти работу зарубежом. У меня были фриланс клиенты из-за рубежа, но это не сравнить с количеством с СНГ.

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

12.Ваша карьера остановится на 1С, вы не будете развивать свой мозг. (опять будьте честными)

Что бы меня заставило остаться в 1С:
— ООП (да да, создание Object -> Document/Catalog/… ->… Даже с метаданными можно это сделать
— улучшениея языка и укорощение, принудительная типизация переменных, инициализация, Case-sensitive
— Нормальный IDE (Eclipse далеко не лучший)
— Отказ от бинарного проприетарного формата
— Нормальная поддержка JS/HTML/CSS и возможность кастомизации, так же и в мобильной платформе. Все ради нормального дизайна

Как вы понимаете в 1С этого сделано не будет никогда.

Теперь о Java, C++, C#:

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

2.Java прекрасен, ООП возможно для опытных программистов приелся уже (хотя я так не думаю), но горазду хуже без него, любой большой проект превращается в ад

3.Java так и просит использовать чужие решения, использовать наследие и проектировать решения заранее (чего не нужно делать в 1С)

4.Java строг, (но не слишком), требует порядочности, аккуратности и продумывания

5.Изучая Java вы имеете огромный выбор развития карьеры и покрываете большой рынок JAVAEE / JAVASE / JS фреймворки / Scala / Android, и т.д.

6.Изучая Java вы узучите паттерны и сильно удивитесь (если вы пришли из 1С)

7.Прекрасные IDE, Jetbrains/Netbeans/Eclipse/Android studio он продумывает за вас многие вещи и помогает как учитель наблюдающий за вами.

8.Вы найдете работу зарубежом или из дома фрилансером, вы можете участвовать в конкурсах, в Open-Source, выбор за вами.

Не подумайте, что у меня бомбит, наоборот я счастлив и мыслю трезво.

Пишите если тоже задумались об уходе с 1С, помогу вам.
Удачи!
Не холивара ради, но очень хочется узнать чем Java прельстила по сравнению с 1С?


В 1С объекты уже продуманы и написаны до тебя и для тебя.
В Java нужно много писать того, что не решает непосредственную задачу, а так сказать, делать «обвязку» под будущее решение задачи.

Это может быть интересно, так как довольно абстрактно.

;)
binkaminka
В Java нужно много писать того, что не решает непосредственную задачу, а так сказать, делать «обвязку» под будущее решение задачи.

Можно просто сказать коротко и ясно: В Java нужно много писать.©
Прочь упаднические настроения! Года через 3 будешь с улыбкой перечитывать
Многа буквов, не осилил. Видимо у вас много свободного времени, что бы писать такие многословные и пространные тексты. И ВЫ ЖАЛУЕТЕСЬ?!

Радуйтесь. Я тоже помотался по разным там конторам/фирмам, где весело, интересно, но и коммитить свои просветления приходилось часа в три ночи. Сейчас мне 45, работаю в большой конторе, на удаленной работе из дома. На уютном проекте. Ну подумаешь, что WebSphere 6 и ява 6. Я никого не трогаю, меня никто не трогает. Восемь часов рабочий день. 30 дней отпуск, можно даже все 30 подрят взять и с рюкзачком на пять-шесть недель! Красота. Таких проектов в промышленности столько наворотили. Мне их поддерживать еще лет на 20 хватит думаю. Дома занялся автоматизацией, благо сейчас esp и всяких готовых вещей на эту тему полно. Мебель сам собираю. Жизнь прекрасна!
> Многа буквов, не осилил. Видимо у вас много свободного времени, что бы писать такие многословные и пространные тексты.

То есть, вариант, что текст писался с апреля прошлого года не рассматривается? Именно тогда вышла оригинальная статья, мне понравилась идея, и я начал писать свою, методично, по кусочкам. Сегодня выложил многомесячную работу.
Возможно если бы Вы ее публиковали «по кусочкам» ее было бы легче читать
Сорри, привык к крупным формам.
Не слушайте эти жалобы, всем угодить невозможно… А ваша написана интересным и грамотным русским языком, и является цельной. Я бы тоже так написал!
Мне очень понравилось — пока читал, успел забыть про утренний и свежий кофе. Теперь пенка упала, он остыл, но пофиг. Статья важней.
Долой клиповое сознание, отличная форма, размеренная и с деталями. Спасибо.
Хорошо написано, не обращайте внимания.
P.S. Мне 48, iOS dev на удаленке.
поддерживаю, хорошо написано, актуально, информативно.
Мне 47, iOS developer, Тель Авив.
Тоже мысли о свечном заводике или чем то подобном.
А почему у вас не было попытки уволится из организации и предложить им поддержку проекта? Так часто делают и организации может быть выгоднее даже, чем собственный штат держать.
Спасибо за статью, интересно было почитать.
Я осилил :) Мы с Вами ровесники и путь в ИТ похож. Полностью с Вами согласен.
Последние 10 лет работаю по 1С — денежно, но неинтересно.
Для души есть несколько проектов. Но времени на них практически нет…

Спасибо за статью!!!

Тут немного, читается отлично, ребёнку на ночь сказки большей длины читаются. Не пойму тенденции современного мира писать "обрывками" (кстати в тексте про эту особенность современного интернета как раз написано).

Многа буквов, не осилил.

А зря, читается легко и с интересом. Хотя сперва тоже было желание не читать статью, а проскроллить до комментариев.
gsaw:
Ну подумаешь, что WebSphere 6 и ява 6. Я никого не трогаю, меня никто не трогает. Восемь часов рабочий день. 30 дней отпуск, можно даже все 30 подрят взять и с рюкзачком на пять-шесть недель! Красота. Таких проектов в промышленности столько наворотили. Мне их поддерживать еще лет на 20 хватит думаю. Дома занялся автоматизацией, благо сейчас esp и всяких готовых вещей на эту тему полно. Мебель сам собираю. Жизнь прекрасна!

Гимн поддержки legacy кода. — Да здравствует Cobol! ©
Я научился на яве писать модули вместо кобола и даже получается их на мэйнфрейме запускать. Скоро меня совсем некем будет заменить. :)
А я не Rexx понаписал кучу полезного. Да там не то что заменить, сам далеко не сразу понимаю что происходит
Сам вырвался из подобной рутины через конкурсы. Есть множество конкурсов, на хабре постоянно идут анонсы. По программированию, по машинному обучению, графике, взлому и т.д. Если есть мотивация и время — надо занять на одном из таких конкурсов место в верхней половине таблицы. Это уже является пропуском для предметного разговора с устроителями конкурса и их непосредствеными конкурентами.

В общем — конкурс — лучшая квалификация, чем свой сайд проект. Работу помогает искать лучше.
Первая часть — просто пост ностальгии. А дальше привычный постсоветский ужас. Огромное спасибо за публикацию.
Да — читать печально — и особенно печально свысоты своих лет — имею ввиду, что я значительно старше автора, и мой путь в области разработки ПО не таков, правда я начинал в другое время, когда машины были большими, сначала отечественными, а потом ЕС-ными.
Тем не менее я благополучно переехал на персональные компьютеры, освоив по ходу дела самые разные языки и разные операционные системы.
Но скажу сразу язык С надо программисту знать обязательно, особенно указатели (кому они доставляю проблемыт следует еще потренироваться)
Автору все-таки не повезло, что не пришлось работать в нормальных программистких фирмах, особенно зарубежных — это правит стиль и учит технологиям. И к слову 40 лет не такой большой возраст для поиска работы в них, короче еще не вечер.
Как и не вечер 60 лет — все-таки программирование требует только головы, приложенной к компьютеру — главное чтобы было напряжение в сети и доступ к интернет
Поэтому желаю успехов в сфере информационных технологий, которая дает человеку свободу самовыражения и творчество (кстати — хорошо оплачиваемого)
Поддерживаю мнение насчет зарубежных фирм (да даже отечественных, работающих профессионально как на себя, так и на аутсорс). Некоторые из них даже предлагают обучение(да, платное), но с дальнейшим вливанием в проект. Придется несколько месяцев попотеть, поизучать кучу новых технологий, но это же и позволит взбодриться. Сам наблюдал рост нескольких персонажей за 40 из «да кому я уже нужен» со вселенской скорбью на лице в людей с улыбкой, которые делают по-настоящему что-то значимое и нужное, да еще и получают от этого кайф и конкурентную ЗП, Удачи автору, и спасибо за статью!
Вот именно. Автора надо поругать за упаднические настроения!

Мне 58, программирую с 1975, с 1978 зарабатываю этим деньги. Переходить в руководители проектов не собираюсь.

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

Проблема-то не в указателях, как таковых, а как верно сказал автор
как можно было так уродливо сделать такую простую вещь, и почему эту уродскую реализацию еще и приняли в стандарт
и что же там уродливого — автору я не стал задавать этот вопрос
Я тоже не понял. Особенно про «Зная Ассемблер КР580ВМ80А, и успев поковыряться с i8086». Интеловский ассемблер и C у меня были основными языками лет 7, на них написаны просто груды кода, и ни разу такой мысли не возникало.
Здесь скорее всего зависит от того, как вы познакомились с указателями.
По каким-то книжкам, не помню уже. Хотя не так и много их было в начале 90-х, но точно не K&R. Что там знакомиться-то, описание уровня «если перед объявлением переменной стоит звёздочка — это указатель, то есть переменная в которой содержится адрес» прочитывается быстрей, чем пишется этот текст. «Арифметические операции меняют адрес не на операнд, а на размер типа» — тоже вроде не бином Ньютона :) Дальше по примерам, по собственным попыткам что-то накодить, если непонятно — в отладчик и в режим дизассемблера.
Я не в этом смысле. Я имею в виду само понятие «указатель», как адрес на что-то. Не в Си, а вообще, как сущность. На мой взгляд, в зависимости от того, как понятие «указатель» вошло в вашу жизнь — при изучении Си или до того — синтаксис Си в этой части соответственно не будет или будет казаться «нехорошим». В том числе при работе с формальными параметрами и т.д.
Субъективно, разумеется.
После ассемблера и бейсика. Как-то так: указатель — эта переменная, которая инициализируется значением не с помощью mov, а командой lea.
Интересный подход. Такие объяснения очень наглядно показывают, насколько по-разному устроено мышление у разных людей.
Работая с низким уровнем, я всегда мысленно работаю с абстрактно памятью, максимум — ячейками памяти, но не переменными. Т.е. указатель — это адрес ячейки памяти, но никакой не переменной, потому что видение вон той группы байт переменной — только в моей голове. В макроассемблере, который может работать со структурами, все уже ближе к ЯВУ, разумеется.
Вот как раз в ассемблере с памятью приходилось иметь дело постоянно, начиная с банального 0B800h и заканчивая всякими ползаниями по резидентам/MCB. А что в C можно точно так же адресовать память даже и не задумывался до какого-то времени, ибо все задачи, в которых это было нужно, решались на ассемблере :)
Да, тут не расшифровано понятие переменной. А оно многогранное, поэтому если смотреть с низкого уровня, с уровня ячеек памяти и команд процессора по работе с памятью, то все не так просто. К примеру, человек сразу задает вопросы: как организовывается память именованных областей памяти (переменных), где эти имена хранятся и хранятся ли вообще, где и как хранится тип и длина данных, почему имя массива является указателем, получится ли у тебя твой лоад эффективе аддрес при передаче значений через стек, или вместо этого будет что-то пушиться/попаться. А еще надо учитывать оптимизацию, передачу через регистры и прочая, чтобы писать эффективные программы. И как то неприятно осознавать, что у тебя в голове не полная картина кода, а какая-то абстракция, и нижний уровень отдан на откуп магии компилятора. Для скриптовых языков это позволительно, но для «высокоуровневого ассемблера», как его тут называют, — нет, потому что результат реализации машкода от такого «ассемблера» непредсказуем, в отличие от настоящего ассемблера, который однозначно транслируется в машкоды.

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

Что такое сегменты данных и стек было известно до того. Во всяком случае с тех пор, как не стало хватать 64k для всего. Да и дранение данных резидентом в собственном теле от этого мало чем отличается принципиально — те же ссылки на адреса участков памяти, фактически являющихся переменными, только в кодовом сегменте. А если что-то непонятно, то компилируешь и тыкаешься в 5 заветных клавиш: t, d, alt, enter, enter.

где эти имена хранятся и хранятся ли вообще

Уж не помню как в досовские времена назывались objdump и аналоги, но таких вопросов не было. В объектнике — понятно как, что с ними происходит потом тоже не секрет.

почему имя массива является указателем,

Никогда не задавался этим вопросом. Какая разница почему? Просто оно так, это нужно запомнить.

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

Не уверен — попробуй, сравни :)

И как то неприятно осознавать, что у тебя в голове не полная картина кода, а какая-то абстракция, и нижний уровень отдан на откуп магии компилятора

Это проходит со временем. А пока не прошло — есть инлайн-ассемблер. Довольно быстро понимаешь, что тратить время на игру с ним можно бесконечно, и в результате выиграть только пару копеек. И куда эффективней потратить время на алгоритмическую оптимизацию абстракции, чтобы выиграть на порядок больше. Но по дурости и молодости да, даже исходники всяких unzip/unarj/unlha на ассемблере переписывал «для ускорения»…

людям, пришедшим с низкого уровня, тяжело с сями

Мне не тяжело. Просто быстро стало понятно, что разным задачам разные инструменты.
>> почему имя массива является указателем,

> Никогда не задавался этим вопросом. Какая разница почему? Просто оно так, это нужно запомнить.

Так задайся, это же твои профессиональные навыки. Ужасно слышать такое от программиста. Я эти вопросы задаю не сам (я то это все расковыривал), а от абстрактного человека, которого ставят перед фактами, не объясняя причин.

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

Не все так бессистемно как кажется.
Могу посоветовать начать копать

Спасибо, но эти раскопки я произвёл лет 20 назад.

Просто не понимаю зачем оно нужно: влезать в глубокие детали реализации сразу при первичном освоении языка. Какая-то детская торопыжность «хочувсёзнатьскорейскорей». Всему своё время.

Да и вообще, IMHO, при изучении новых языков во многих случаях лишний груз знаний иногда лучше выбрасывать, он поначалу только мешает и тащит в сторону «а вот в XYZ было не так!».
Абстрагирование уводит человечество в тупик, когда уже не будет понятно как на самом деле оно работает, чтобы создавать действительно правильные вещи.

Всё должно быть простым и естественным. В том числе и языки программирования.

ИТ отрасль на западе приняла страничную организацию памяти как факт, а ведь это костыли. Это как признать инвалида полноценным (прошу прощения у людей с ограниченными возможностями, если это задевает их чувства). И теперь эти костыли с помощью абстрагирования распространяют на все остальные ИТ технологи. Это даже приводит к тому, что новые архитектуры, которые устроены иначе, должны поддерживать не естественные для них механизмы работы с памятью, просто потому, что программисты так привыкли. А ведь такие требования ухудшают архитектуру и соответственно замедляют эволюцию ИТ технологий. И чем дальше тем глубже мы увязаем в этом топком болоте.
Могу посоветовать начать копать от ассемблерного синтаксиса работы с массивами. Как там обозначается база и смещение, как вычисляется адрес ячейки и как он соотносится с синтаксисом символьной записи

Это так только если считать, что и ассемблер и си начались с х86, а до него ничего небыло ;). На самом деле, скорее всего, скобочки в ассемблер пришли из сей, которые значительно древнее х86. В пидипишном ассемблере (давно не брал я в руки шашек) — ну, вы помните историю сей, — насколько я помню, скобочек небыло. Так что, судя по всему, у вас лишняя сущность и телега впереди лошади :)

Не было сегментов данных на PDP-11. 64К на задачу и всё. Зато были оверлеи.
ЕМНИП, в зависимости от аппаратного промежуточного менеджера памяти можно окнами получать доступ к большому куску.
Можно. Только не окнами, а страницами. Всего было 8 страниц (по 4К слов каждая). А вот сегментных регистров не было. И поддержки переключения страниц в языках программирования не было. Была поддержка оверлеев.

Беда в том, что управление страницами из программы — прилично мешало и защите памяти и возможности исполнения на более слабых машинах. Потому и не использовали без сильной нужды.
НЛО прилетело и опубликовало эту надпись здесь
По-моему современные процессоры уже и не предоставляют возможности прямого исполнения программ в машинных кодах, соответственно и ассемблера. Система команд это уже некий уровень абстракции и программа, например на x86 системе команд, потом оптимизируется на аппаратном уровне и в реальности исполняет другую программу.
Мир устроен не так, как вам кажется…
А что не так? Определенно речь шла о uOps'ах.
Не так то, что современные процессоры прекрасно «прямо» исполняют программы в машинных кодах. При наличии хорошей памяти и знаний, вы прямо в Hex editor-е «Far Manager»-а можете набрать двоичный файл, который запустится как exe.
Или написать простенькую программу на ассемблере, слинковать и запустить ее.

P.S. Не нужно путать машинный код с микрокодом процессора!
Именно. Микрокод это микропрограмма зашитая в процессор, которая преобразует машинный код, который вы набьете в фаре в микрооперации, которые реально то и исполняет процессор.
а вы просто не поняли смысл сообщения slonm, на который кинулись с копьем.
Нет, это вы, видимо, не умеете читать по-русски. Фразу
По-моему современные процессоры уже и не предоставляют возможности прямого исполнения программ в машинных кодах, соответственно и ассемблера

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

Еще раз, медленно: современные процессоры ПРЕДОСТАВЛЯЮТ возможность прямого исполнения программ в машинных кодах.
Шли бы с PDP-11 все было бы очевидно. Собственно могу дать ответы на все ваши вопросы. Но ответы будут однотипные:

  • В бестиповом языке (а таким был Би) это было разумно. Оставлено для совместимости (ну или просто не стали переделывать).
  • Сделано для упрощения перехода от бестипового языка Би к типовому Си.


А на PDP-11 — все транслируется очень прозрачно.
Вы объясняете, почему так получилось. А это понятно в принципе и по наитию.
А многое в IT сделано именно так, как было сделать проще.

Почему в фортране-IV такие странные правила входа и выхода из расширенной области цикла? а это описание поведения первых компиляторов. Почему в фортране такой странный арифметический IF с тремя метками? А это машинная инструкция такая была на IBM 709,

Почему форматы printf такие? А это было скопировано с форматов фортрана, а в нем — с ассемблерного рантайма того же IBM-709. Скопировано не полностью, форматы фортрана умеют больше сишных, но тем не менее.
недаром по индексу Tiobe c второй по популярности язык программирования (http://www.tiobe.com/tiobe-index/)
Там все уродливо, начиная от положения типа слева в определениях, что порождает вывод типа по спирали, и кончая контекстной зависимостью синтаксиса звездочки.

Про спираль тут: http://webhamster.ru/mytetrashare/index/mtb0/1467033248FT6hne92kG

Про контекстную зависимость, думаю, сами знаете, хотя может быть она вас и не напрягает.
понятие уродливости условно (по польски uroda означает красота), но спорить не буду — хотя предложение других (менее уродливых) обозначений привествуются
Двусмысленность и нечитаемость. Можно вспомнить сайт-онлайн переводчик сишных выражений. Если начинать с Си — возможно покажется нормальным. Если переходить на него после Ассемблера, как в моем и автора случае — синтаксис в этой части кажется уродливым. Да, не только в части стандарта, скорее в части, что позволяет писать write-only код.
опыт написания правильных c-шных программ (практика, как критерий истины) говорит. что c дает нормальный код, а плохо писать можно на любом языке… Рекомендую заметки Джэля Спольски, что не повторять его рассуждения.
Насчет перехода с ассемблера не понял ваших проблем.
Нас, в свое время, учили сначала программированию в кодах (то есть даже не ассемблере) и мы смотрели код по дампу памяти. Поэтому любое символизирование было благом, но не только. Использование указателей позволяет мыслить динамическими структурами вместе с пониманием, что любой код может быть данными, а данные кодом.
опыт написания правильных c-шных программ (практика, как критерий истины) говорит. что c дает нормальный код, а плохо писать можно на любом языке…

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

Насчет перехода с ассемблера не понял ваших проблем.

А нет никаких проблем. Мы говорим о субъективном восприятии синтаксиса.

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

Разумеется, но это не отменяет
как можно было так уродливо сделать такую простую вещь, и почему эту уродскую реализацию еще и приняли в стандарт
Да ещё хуже, если с Си начинать. Так-то хотя бы можно отделить мух от котлет: вот — работа с памятью, а вот — сишный синтаксис для работы с памятью, да, он говно, но деваться некуда, надо терпеть. А тут с Си начинаешь, надо одновременно и с памятью учиться, и синтаксис превозмогать. Я с Си начинал, до сих пор глаз дёргается…
Когда в Си вводили описание типов, то для ускорения сделали хак. Вместо описания типа переменной мы пишем выражение и его результат. int **pp означает, что дважды разыменовывая pp получаем int. Это красиво, для одних и уродливо для других.
На мой взгляд график в начале статьи неверно интерпретирован. Вполне нормально что нынешние пенсионеры не интересуются IT отраслью и это связано не с биологическим возрастом, а с тем что в их молодости не было IT как класса и интереса к этой отрасли не возникает. Вполне вероятно, что 60-летние пенсионеры через 30 лет будут интересоваться совсем другим.
Я подумывал об этом, хорошо если так. Но я смотрю на сегодняшных пенсионеров, у которых в молодости была и космонавтика на экранах, и очевидное-невероятное, и наука и жизнь, а они интересуются только лекарствами, коммуналкой и размером пенсий.
У меня сотруднику за 60, начинал работать еще в КБ с Алексеевым (Каспийский монстр и т.п.). Несколько лет назад освоил программирование на 1С. Работает…
Думаю, что те, кого тогда интересовали очевидное-невероятное и наука и жизнь, и сейчас наособицу. Моему отцу 83 года, несколько лет назад при моей поддержке освоил компьютер на уровне текстового процессора, браузера и электронной почты. Не всё получается, но и возраст всё же почтенный. И да, он когда-то выписывал «Науку и жизнь».

А как же домино?

Полностью согласна. Лет 10-13 назад, когда была еще эра КПК, видела деда с КПК, с рюкзаком (с молодежным) и в джинсах. Я еще подумала, вот это да. А в то время еще не вся молодеж была с КПК на ты.
Так что это дело сугубо каждого. Одни пенсионеры хотят изучать новое и это у них получается. А другим просто это не нужно. Но и опять, это должно быть систематическим изучением. А не то что раз и неожиданно решил заняться программированием. Как говорится, мозг нужно постоянно держать в тонусе. Если перестаешь это делать, то идет своеобразная деградация.

Просто количество выпускаемых программистов удваивается раз в пять лет. (С) Боб Мартин

Количество — не значит качество :)
Согласен, что график будет другим. А откуда этот взят, источник не увидел.
мне 59, коллега, обнимемся
в компе живу с 1980-го

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

чукча читатель, в основном, вот цитаты из резюме

Закончил Томский институт автоматизированных систем управления и радиоэлектроники.
Больше 19 лет у меня была своя группа компаний, но ее съели конкуренты.
В институте в 1980-м первый раз сел за компьютер. После окончания института по распределению работал до 1989 года на военном заводе в опытно-конструкторском бюро, занимался разработкой и модернизацией радиоаппаратуры для атомных подводных лодок, в 1987 собрал свой первый компьютер Радио-86РК. До 92-го года работал в кооперативе инженером-программистом, изготавливал программы на Clipper для сельского хозяйства. С 1992 по 2008 в должности директора ТОО, начинал с поставки компьютеров для Комитета национальной безопасности Казахстана, далее провёл полную компьютеризацию ликеро-водочного завода, коммерческого банка, транспортной инспекции и др. Создал лично и поддерживал в разные годы сайты губернатора, мебельной фабрики, фирмы Посылторг, завода по изготовлению пластиковых окон, автосервиса, интернет-магазина автомобилей, казахстанского землячества в Москве, областной библиотеки, таможенного брокера.
Все последующие знания приобретены самостоятельно. Здесь не было возможности заниматься чем-то одним и очень глубоко, здесь нужно было заниматься всем – вот хороший пример – контроллер по проведению иммуно-ферментного анализа, встретился один раз в жизни, в городе 2 года искали специалиста, пока не нашли меня, документация на английском, через три дня я составил первую программу и после проведения анализов по этой программе было выявлено и предотвращено распространение птичьего гриппа на птицефабрике.
Особенно интенсивно программировал в конце 80-х – начале 90-х, в основном на Clipper и C. Сейчас пишу «для сэбэ» роботов ЖЖ на php+mysql, пробавлялся заказами на cs-cart. Сейчас осваиваю андроид под гаджеты. Знаю практически все CMS.
Линуксоид последние 6 лет.
Недостатки – медленно работаю из-за скрупулезности и дотошности, сейчас такие не нужны.
Хотел замутить тему, но не сложилось https://boomstarter.ru/projects/100798/platezhnye_dokumenty
Написал TDS для высоконагруженных (5 млн хитов в сутки ) проектов (детектор на node.js, админка на yii2).
Заканчиваю на tf6.ru интернет-радио, там же сделаю веб-телевидение для израильтян, иншаалла.
Переехал в Россию.
Такие дела.
1. Зайти на хабр
2. Найти крутую статью и залипнуть за чтением, попутно ловя себя на аналогиях.
3. Встретить человека из родного вуза
4.…
5. Profit!
Да, ТИАСУР — гигант с тентаклями.
Какого года издания?

43 года, я просто гораздо меньше стал кодировать, а больше — документировать и тестировать.


Да и вообще, в основном управляю командой.

НЛО прилетело и опубликовало эту надпись здесь
Так держать! На фрилансе не соскучишься. Хотя более 3 лет назад в нашем «русском» фрилансе как то было веселее (мое мнение).
Передавайте свои знания молодежи, нам передавать особо было некому, учились как могли.
Расскажу как происходит передача знаний на собственном примере.
Мне за 40 и многое, что описано в статье мне понятно и близко, начиная с изучения ассемблера Z80, ВМ80, i86 (а после PIC, I51 и AVR), заканчивая невозможностью переезда в более крупный город (даже хотя бы в областной центр) без последствий для семьи. Но сейчас не об этом. После 40 вдруг стало появляться желание передавать свои знания молодежи в свободное от основной работы время.

В центре дополнительного образования города очень обрадовались моему такому желанию, учитывая, что единственному педагогу в сфере техники скоро 80 и он уже 5 лет собирается уйти на давно заслуженный отдых. На радостях предложили 10 часов в неделю за зарплату 3000 рублей в месяц и не понимая, почему мое желание резко поубавилось. После недолгих переговоров, решили, что работа будет сложная и напряженная, а потому нужно сделать 100% надбавки, а это уже целых 6000 рублей в месяц. Ну ладно, заработать там я и не надеялся, хотя преподаватели робототехники в коммерческих кружках на Lego-конструкторах зарабатывают совсем немало.

Опустим эмоции.
Помимо написания годового плана занятий мне поставили задачу самостоятельно набрать 2 группы по 25 человек, иначе никакой сложности и напряженности быть не может. Из 50 записавшихся больше половины пришли только на первое занятие и потом пропали. Их родители объяснили это большой загруженностью в школе. Из тех, кто остался больше половины приходят только потому, что родители их отправляют посещать секции, а здесь бесплатно. Есть несколько детей, у которых явно виден интерес и которым хочется передать свой опыт, но если все время уделять только им, остальная масса превратит занятие в неконтролируемый хаос. После полугода занятий руководство потребовало участия детей в конкурсах, и никакие объяснения, что за это время ребенок не сможет сделать поделку, не принимались. Открытым текстом было предложено сделать все самому и написать текст выступления для ребенка. Зарплату напомнить? В конце концов поехал на региональный конкурс в качестве наблюдателя. Что я там увидел? Ту же самую видимость проведения работы с кучей мертворожденных проектов, только чтобы отчитаться, что работа ведется. Я, конечно, дотяну текущий учебный год ради тех единиц, которым интересно, и для которых это может послужить толчком к выбору дальнейшей профессии, как это было у меня, но новую группу в следующем году набирать не вижу смысла.
Извините за длинный текст, наболело.

А Вы не думали сделать что-то похожее, но через блог/группу ВК, Khan Academy и что-нибудь codingame.com? На входе будет больше мотивированных студентов.

Мысли были, но это совсем другие затраты времени. А начать что-то, и потом бросить ссылаясь на нехватку времени — не мой путь. Может быть еще не созрел для этого…

Примерно тоже самое с бюджетными студентами, которые учатся на программистов. Человек 5 из потока в 100 человек будут хорошими программистами, половину отчислим, остальные будут тестерами и веб-программистами. Зарплата на полставки (те же 10 часов в неделю) старшего преподавателя в Омском Государственном Университете в точности 6000 рублей до вычета налогов )

Спасибо, жизненно!

Вы часто спрашивали — чем заняться?
Можно подкину Вам идею — напишите книгу, мне кажется писать у Вас хорошо получается.
Есть люди, которые в 30 играют в Доту и пишут никому ненужные скрипты на мертворожденных фреймворках. У тебя все не так уж и плохо, просто обычный 1С-way.
Ну… Мне уже больше 40. Первые компьютеры в моей жизни появились году в 1986 вроде, 9-10 классы, и были это СМ 1800. Тогда же и первые «Электроника МК», згоггология, «посадка на Луну» и прочие радости. В виду трудоступности железа прграммирование происходило в основном его отстутвие, карандашом в тетрадке, обложившись журналами «Наука и жизнь», «Радио» и «Техника — молодёжи» :-) С тех пор, кстати, считаю умение набросать код на бумажке, не заглядывая на SO/гугл одним из ключевых моментов, характеризующих качество базовых навыков.

Зарабатывать программированием начал в 1994. С тех пор было немало колебаний генеральной линии, в разные стороны. Но как отходил от основного направления, так и возвращался к «чистому» программированию, не задерживаясь надолго в смежных областях, будь то управление/тимлидство или что-то ещё. До сих пор занимаюсь разработкой и ничего другого не хочу. Работы навалом, не вижу ни малейшего повода ни для скуки, ни для мрачного отношения к перспективам. Чего и вам желаю :)
Спасибо за поддержку. Вы счастливый человек, который занимается сваим делом. Я вам по-хорошему завидую. Могу только пожелать вам здоровья, остальное вы сами себе можете обеспечить.
згоггология
Всё-таки еггогология!

image

И ещё долго мучил вопрос: «Бэ-Зэ 34» или «Бэ-Три 34». Потому что слышать не приходилось, а по шрифтам непонятно было :)

Именно с "тридцатьчетверкой" лично для меня этот вопрос и отпал: сзади на нем была приклеена алюминиевая табличка, где тройка была совершенно отчетливо написана как цифра (с плоской верхней "крышкой"). Жаль, сфотографировать не могу, а поиском по Инету подходящую картинку не нашел.

Так МК-61 и нет вопросов.
там и то и другое было
Кстати, да. 3ГГОГ — это другой «уровень».
Тогда же и первые «Электроника МК», згоггология, «посадка на Луну» и прочие радости.

А я в «прочих радостях» даже вошел в десятку победителей «Лунолета», был неоднократно «пропечатан» в ТМ, и получил очень красивый диплом с подписями Михаила Пухова и Алексея Леонова (настоящими!).

P.S. Это я, типа, хвастаюсь :D
Что-то я не понял — а при чем тут разработка, Россия, 40? Как-то слабо это все связано со статьей.

Если б вы попробовали рассылать резюме/походить по собеседам в своем возрасте, то тогда у вас появился бы материал — как всякие мелкие пацаны, которые не знают и не умеют ровно ничего, не снисходят даже до того, чтоб прислать отказ 8-) И такую статью я бы понял.

А у вас же не разработка в бэкграунде! Это такой микс — и швец, и жнец, и администратор бумажных журналов. Да еще и с ограничениями по месту работы — маленький город, априори минимум вакансий… Ничего удивительного, что на нынешнем сильно сфокусированном рынке вам ловить нечего!

Хотите быть разработчиком — будьте им. Я вот пилю несколько своих проектов сразу, и не жалуюсь, хоть у меня и история похожа, и условия похуже 8-) Уж по крайней мере себе-то самому я не должен доказывать, что еще могу «писать код б****». можешь писать — пиши. не получается — значит не можешь, все очень просто.
> Если б вы попробовали рассылать резюме/походить по собеседам

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

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

Не важно что вокруг вас кого устраивает. Важно то чего хотите вы. Вы никому ничего не должны, ну, кроме правда, своих детей.

А выходов всегда больше чем два, я не думаю что обязательно всем придется чем-то жертвовать ради того что вы хотите сами для себя. А если и придется, то можно найти компромис, если он нужен.
на самом деле, дети и жена — это огромный тормоз.
ну вот привыкли они к определенному уровню жизни! И это очень, очень трудно объяснить, что все должны переехать из условного дома о 500 квадратах в съемную однушку только потому, что папа в 40 лет ищет себя.

А оно так и будет, потому как в 40 лет, без блестящей подтвержденной карьеры (а на самом деле — даже и с ней), человек долго будет искать работу даже джуном — ему просто никто не поверит, что он реально что-то может! Что может начальником — поверят, у него это в трудовой/резюме написано, а вот девелопером — большой вопрос.

просто представьте себя на месте принимающего решение: это сейчас очень часто пацаны с «огромным» 5летним стажем «программирования», выбившиеся в начальники. Вот ему такого старого пердуна подсовывают, который вообще ничего показать не может — он всю жизнь неведомые 1С сервера админил и журналы подшивал! А следующее собеседование придет четкий и понятный выпускник какого-то вуза, с дипломом и стажем год на сайтофабрике. С которым они вполне себе на одной волне просто в силу возраста.
Вопросы есть? Да нет, конечно…
ему просто никто не поверит, что он реально что-то может


Да, кстати, есть такая проблема. Год с лишним потратил на поиск нового места. И постоянно нарывался на непонимание: не хочешь в таком возрасте быть начальником? Просто разработчиком? Подозрительно это, что-то с тобой не так…
Это имеет под собой основание — выгорание от частой смены технологий и так далее. Менеджмент же более стабилен, кмк. С возрастом ухудшаются способности к обучению.
Откуда взялась мысль про частую смену технологий — непонятно. Я как писал на C да перле, и Java захватываю, так до сих пор на них и пишу :)
А что касается усвоения нового, так это ещё вопрос, кто быстрей разберётся: «ветеран» с немалым опытом за плечами, или молодёжь без такового. Во всяком случае 4 месяца назад я даже не подозревал о технологиях и протоколах, с которыми сейчас приходится работать. Ничего, по мнению новой команды освоился быстро, на продакшн новые фичи выдаю и не кашляю :)
Откуда взялась мысль про частую смену технологий — непонятно. Я как писал на C да перле, и Java захватываю, так до сих пор на них и пишу :)

Оттуда, что области — разные. Где-то оно так, где-то иначе. В веб-программировании, например, не так.

А что касается усвоения нового, так это ещё вопрос, кто быстрей разберётся:

Нет такого вопроса. Человеческое тело в целом и мозг в частности, не молодеет. Такие болезни, как склероз и деменция — болезни не молодого поколения. Вы говорите о просто не юных людях, а я помню, что пенсионный возраст отодвигается в сторону 70 лет.

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

Когда останется 3-5 лет до пенсии, тоже так будет?
Вы говорите о просто не юных людях

Я говорю о людях того возраста, про который идёт речь в этой теме. В частности, в этой ветке — о 40 с мелочью.
Когда останется 3-5 лет до пенсии, тоже так будет?

Надеюсь что нет :) Но какое это имеет отношение к обсуждаемой проблеме?
Это очень индивидуально. Но рецепт, который я выработал для себя — нельзя позволять мозгу ржаветь. Это сродни сёрфингу: пока ты на гребне — ты летишь вперёд, стоит притормозить — и ты падаешь.
Мне почти 37, я поймал вот этот «провал», когда родился первый ребёнок и я почти на год выпал из IT. Работу работал, конечно, но о своих проектах и расширении знаний не думал. В итоге, хотя когда-то мог работать вебмастером (основная специализация — админ), я не успел взять блочную вёрстку и этот кусок оказался потерян. Сейчас мне уже проще заплатить другому, чем делать самому.
В то же время перед глазами пример товарища, которому 47, при этом он свободно программирует микроконтроллеры, пишет на половине существующих языков, админит линукс и ухитряется оставаться в тренде всех новых технологий. А, ну и ещё он миллионер, владелец и тимлидер нескольких бизнесов.
Так что возможности человеческие безграничны. Не надо просто отпускать педаль газа, как это сделал автор сего текста.
Любимая цитата из Кэрролла: «Чтобы стоять на месте — нужно бежать со всех ног. Чтобы двигаться — нужно бежать минимум вдвое быстрее».
А, ну и ещё он миллионер, владелец и тимлидер нескольких бизнесов.

Тони Старк?
Извините, не удержался…
Нет, Брюс Уэйн :-)
Кстати иностранные заказчики вполне понимающе относятся. Я сам после 7 лет работы мидл-менеджером вернулся обратно в разработку и администрирование.
Должно быть что-то российское. У меня в Лондоне в команде сейчас два разоаботчика за 40. Проблем нет. При этом мне, тимлиду, 33 года, а следующему человеку в цепочке управления 35.

На самом деле дискрименация по возрасту встречается довольно редко в нашей индустрии. Если это именно разработка, а не всё в одном котле.

Ну, мне больше и 40 и работа с неплохой зарплатой именно в разработке со сценарием "чё хочу, то и ворочу", то есть без проблем выбрать технологию и способы реализации и тд. Мечта. А как-то прилетела вакансия с переездом в другую страну (не город!) и ещё одна, но дома, удалённо почти с такой же зарплатой. Подумал и… уехал в другую страну. Сейчас пытаюсь совладать с тремя языками (на которых разговаривают), отчего иногда перестаю понимать русский :). Зато прикольно. А так тоже — жена, дети, квартира, машина, бабушки…
А работать на нелюбимой работе — вообще жуть. Мне на таких тоже приходилось работать. Но недолго. Убегал при первой же возможности. Как и с такой, которая превращалась в рутину.

Тогда пардон за поспешный вывод — у вас ситуация примерно как у меня 8-)
Но вариант «писать свое самому» — по-прежнему в силе.
НЛО прилетело и опубликовало эту надпись здесь
Не, я Родину люблю.
любовь на расстоянии, тоже любовь)
НЛО прилетело и опубликовало эту надпись здесь
Таки у вас расхождение желаний и реальности. Вы хотите быть программером, но жизнь упорно вас тянет даже не в админы, а в откровенно управляющую стезю, на должность руководителя ИТ отдела (или вы уже там, а я не правильно понял из текста). И сейчас вам в разы сложнее бросить всё, пожертвовать комфортом не только своим, но и своих родных. Как по мне, так у вас выбор, либо жертвовать, либо принять. И принять то, кем вы по факту являетесь в разы менее накладно, да и, как понимаю, совсем не плохая должность относительно старта карьеры.
По поводу бумагомарательства в гос.предприятиях да еще и на руководящих должностях я тоже парюсь, но в ваших силах менять структуру работы, если вы начальник. Хотя даже активный подчиненный может поменять. Это в ваших интересах.
ЗЫ: мне 36, сам начинал прогать на спектруме в 90-е, а потом не попал в техникуме на программинг, попал сначала на метрологию и смог перевестись на выч.машины и сети. Дальше сплошное админство от мелких до крупных контор и жизнь усердно пихает на управляющие должности, несмотря на мои попытки все-таки уйти в программинг. И в имеющейся ситуации моей жизни, последний выбор я сделал за руководящую должность.
Успехов в принятии себя и своей жизни, а программинг оставьте себе, как хобби и отдых.
Удаленка, особенно сейчас в 2020.
1) Посмотрите видео целиком.
США - Хуже нет, чем быть программистом старше 35 лет. Нет, в 40 лет ему еще страшнее


Германия - Стать программистом в 30, 40, 50 лет? Мысли на эту тему.



2) Не тратьте время на Русский фриланс. Учим En и на upwork. Труд программиста легко продается на расстоянии, не ограничивайте себя малым рынком.

3) Все индивидуально.

Удачи!
Еще добавлю.

Поясните мне что значит — «мне уже n лет, и я уже не могу угнаться за новыми технологиями, или все что я знал устарело?»

Вот что кардинально изменилось за 10 лет в C#, HTML, CSS, JavaScript например?
Да ничего, добавилось немного нового функционала для более быстрой и простой разработки.

React, Angular — что там нового то? Это тот же JS, просто набор чьих то идей упакованных в обычные JS объекты.

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

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

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

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

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

По фрилансу.
Ру — это рынок 250-400 млн человек.
En — это миллиарды людей.
Больше возможностей, дерзайте.
На мой взгляд, с годами сужается зона комфорта. Вплоть до того, что человек привыкает не то что к синтаксису и библиотекам, а к виду IDE. True story, кстати.
Я очень долго не мог отвыкнуть от борландовской сишной IDE 3.1 :) Даже NLM-ки приспособился собирать в ней, через внешние утилиты.
Когда пришлось окончательно распрощаться с DOS/Windows даже пытался собирать нечто похожее из линуксового порта Turbo Vision.
Но потом нашёл компромисс. Просто настраиваю цветовую схему «как там было», шрифты подбираю, становится намного легче :)
Ага. Я на столько привык к vim, что даже понимая преимущества IDEA, так и не научился им пользоваться.

В Idea есть отличный плагин IdeaVim. Пользуюсь им с первого дня, как начал пользоваться Idea.

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

Новые фреймверки, новые фичи языков. Человек, не следящий за изменениями, через пять лет не будет понимать код, написанный на том же языке, но с использованием новых стандартов. Замыкания, автовывод типов — ведь все это появилось настолько недавно, что даже не во всех вузовских курсах об этом говорят. Языки развиваются, тот же яваскрипт уже не поймешь, если не догоняешь нововведений EC6, а знаешь только основы. Про фреймверки и скорость их появления и обновления можно и не говорить.
1) ES 2015 можно выучить за пару дней — https://learn.javascript.ru/es-modern
И это не отменяет знания предыдущей спецификации а дополняет ее.

2) Вы в IT профессии, она кормит Вас и вашу семью.

— работает человек 1 год, и говорит себе — «меня все устраивает, ничего не интересует из мира IT (ты мне не интересен).»
— работает человек 5 лет и говорит себе — «меня все устраивает, ничего не интересует из мира IT (ты мне не интересен).»
— работает человек 10 лет и говорит себе — «меня все устраивает, ничего не интересует из мира IT (ты мне не интересен).»

Потом бац, и этого человека что то уже не устраивает, он приходит на рынок IT и говорит — «мне нужна работа, помоги». И тут злой IT говорит ему — «чувак, теперь ты не интересен мне».

О боже как же так, я ведь все делал как надо, правда ведь?

Но дело не в IT, а в том что человек имеет консервативные взгляды. Будь он врачом, политиком, кем угодно. Достиг результата и закрылся от изменений, все ОК, нужно только сохранять это состояние. И это не плохо, это еще один взгляд на мир, ни лучше и не хуже.

Три часа в неделю можно выделить для ознакомления с новыми событиями в мире IT.
В году 52 недели, в каждую 3 часа читаем про новинки.
Проходит 10 лет, 52 * 10 * 3 = 1560 часов.
~ 70% забылось = 1560 * 0.3 = 468 часов.
468 / 24 = 20 дней чистого потока информации.
Что то сказать про текущее положение дел вы определенно сможете.
Читать про новинки мало (вышел ES5! вышел ES6!), надо на них делать, для закрепления результата. Причем не просто на новинках, а с использованием нововведений (иначе можно на обратно-совместимых вещах дальше клепать, пока они не depricated).
Areso >
Читать про новинки мало (вышел ES5! вышел ES6!), надо на них делать, для закрепления результата. Причем не просто на новинках, а с использованием нововведений (иначе можно на обратно-совместимых вещах дальше клепать, пока они не depricated).

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

«Java ждуны». (С)
НЛО прилетело и опубликовало эту надпись здесь
JavaScript развивается просто сумасшедшими темпами. В ES6 вон даже классы завезли.

Ничего там по сути не поменено. Да и не нуждается JS в помене. ;-)

Но вот что там ниже @AlexPu переучивает в Java, я не понимаю:
Я работаю на JAVA и переучиваюсь гораздо больше чем по 100 раз


«Java — это Cobol сегодня.» (С)

А есть же люди, что пишут на SQL — вот где тоска так тоска несусветная. ;-)
>>Но вот что там ниже AlexPu переучивает в Java, я не понимаю

И не поймете — не дано вам…
JavaScript хоть развивается. — А вот остальные языки, типа Java — там люди годами ждут хоть какой то новинки. И так ей радуются, так радуются. — А как печалятся что новинка перенесена в следующий релиз.

В Java (и JVM) существует десятки фреймворков и сотни открытых библиотек, которые позволяют добавить все что угодно. И они постоянно обновляются и развиваются. Сам синтаксис самого языка развивается не так быстро, но при желании даже синтаксис можно расширить (проект Lambok, например). Ну и синтаксис это далеко не самое главное, а практически все что есть в стандартной библиотеки (коллекции, веб, многопоточность, функциональное программирование) переписано в десятках сторонних библиотек. Хочешь писать вот прямо как на каком-нибудь Haskele, найдете достаточно библиотек добавляющий все возможные функциональные штуки.
НЛО прилетело и опубликовало эту надпись здесь
Мне 50 лет и я не вижу проблем выучить новый язык. Другой момент, что большинство нового — это однодневки, их даже изучать не стоит. Процентов 10 — остается, остальное больше похоже на Hype Driven Development. А опыт как раз и дает понимание, какая из новомодных технологий полезна.

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

Да и вообще, не понимаю такой профессии «программист Си». Или ты программист и можешь написать на чем угодно или ты не программист. В любом проекте — bash, make., sed, awk… Так что хочешь — не хочешь, но в рамках одного языка замкнуться не удатся
Да и вообще, не понимаю такой профессии «программист Си»

С "программистом Си" всё, как раз, просто :). А вот "программист 1С" — это, в большинстве случаев, да. Отдельная "профессия" и отдельный другой мир. :) Практически не пересекающийся с миром остальных программистов. Исключения бывают, я о них слышал. Но ни разу не видел вживую.

Настройщик 1С — действительно больше бухгалтер, чем программист. А само по себе программирование на 1С не сильно отличается от программирования на SQL. Участвовал я как-то в написании "убийцы 1С", так что приходилось копаться и в компиляторе языка 1С и исполняемые функции дописывать и тесты на этом самом 1С писать.

Специфика там больше бухгалтерская. План счетов понимать надо и так далее… Но это с любой СУБД так.

Ну, разумеется, это какое-то там программирование. Я про другое, этот 1С мир практически не пересекается с остальным миром программирования. Я видел людей, перешедших из бейсика в си, из си в яву, из явы в дотнет, из питона в яваскрипт, даже из пхп в руби :) и огромное количество разных других вариантов (не говоря о владении годным для практического использования несколькими языками), но я никогда не видел человека, перешедшего с 1С куда бы то ни было. Слышал, что такие есть. А вот видеть не доводилось. Моя выборка, конечно, не велика, всего 2-3 сотни персон, но, всё же...

Если человеку нужно «переходить» из языка в язык — это не программист, это кодер. Программист пишет алгоритмы и закодировать их может на любом из десятка (десятков) известных ему языков.

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

Для понимания жесткости специфики бухгалтерских задач. У автомобиля есть номерные агрегаты (двигатель, шасси..). Но… при замене двигателя старый не всегда можно сразу списать, ибо есть сроки амортизации. В итоге в одной конторе на балансе был ЗИЛок с двумя двигателями. Ну а кодировщик 1С должен такие ситуации предусматривать в структуре таблиц и документов за десяток лет до того, как они случились.

Про непредсказумые изменения требований от ЦБ раз в полгода и не говорю…
Программист пишет алгоритмы и закодировать их может на любом из десятка (десятков) известных ему языков

Скорее ваш пример про кодера. Или про программиста ЕС ЭВМ. Когда задачи простые, можно писать алгоритмы и кодировать их на любых языках. Современное промышленное программирование довольно далеко ушло от такого положения дел. Разрабатываемые системы стали сложнее, они интегрируются с другими и тд и тп. Одного знания языка, которым можно закодировать алгоритм недостаточно. Необходимо знать инфраструктуру, которая, как правило, сильно объёмнее самого языка и язык в ней — самый простой компонент. Но, при этом, инфраструктура привязана к языку. Поэтому "переключение" языков сложно, дорого и затратно.


Кодируют на 1С бухгалтеры

Сомневаюсь. Есть целая армия специальных 1С программистов.


Для понимания жесткости специфики бухгалтерских задач. У автомобиля есть номерные агрегаты...

Мне кажется, тут жёсткость самого языка. Задача-то тривиальная.
Ни как не могу забыть, как во времена оны две (джве!) сокурсницы защитили дипломы на задаче удаления каких-то связанных сущностей из тогдашней базы 1С одного предприятия. Слушать доклад о подводных граблях и неимоверных трудностях, которые они решали было занимательно и поучительно. Не отпускала мысль — трёхмесячный труд двух человек решается одним SQL запросом… Но небыло тогда в 1С сиквела. И гланды приходилось вырезать автогеном через то самое место. Но, конечно, 1С с тех пор сильно изменился, но до сих пор думаю, что 1С-ники, которые всю жизнь работают в таких нечеловеческих условиях — очень самоотверженные люди. Восхищаюсь.

Вы будете смеяться, но в последний раз, когда я сталкивался с 1С 8.2, из всего SQL, там были только развитые Селекты (Выбрать).
Обновлять, Удалять, Создавать объекты запросами было не то нельзя, не то этим никто не пользовался и не описывал в популярных материалах/учебниках по данному языку.
Вы будете смеяться, но в последний раз, когда я сталкивался с 1С 8.2, из всего SQL, там были только развитые Селекты (Выбрать).
Обновлять, Удалять, Создавать объекты запросами было не то нельзя, не то этим никто не пользовался и не описывал в популярных материалах/учебниках по данному языку.


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

Можете привести ссылку на описания синтаксиса и примеры? Промежуточные результаты выборок это временные (виртуальные) таблицы, это понятно.
Я смотрел http://programmist1s.ru/yazyik-zaprosa-1s/ и да и здесь ничего такого не нашел https://its.1c.ru/db/v837doc#bookmark:dev:TI000000453: язык запросов
Опять же, в стандартном функционале мне такое нигде не встречалось
Опять же, в стандартном функционале мне такое нигде не встречалось


В стандартном встречается часто.

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

Первое правило: бардак не автоматизируется.
Знаете, автоматизировали даже генератор законодательного бардака. И вообще, если бы вы были правы, то никакая автоматизация бухгалтерии была не возможна. Изменения (законы, подзаконные акты, письма ЦБ) там происходят несколько раз в месяц.

Полюбуйтесь на частоту информационных писем ЦБ. Каждое письмо, которое касается вашей деятельности, — это переделка. Если повезет — переделывают только бизнес-правила, не повезет — придется ещё и добавлять поля в СУБД. Совсем не повезло — структуру таблиц менять придется.

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

Типичный пример
Гражданин России, не имея жилья и, соответственно, регистрации по месту жительства, не может реализовать конституционное право на предпринимательскую деятельность, о чем регпалата письменно уведомила его в ответ на обращение о регистрации ПБОЮЛ.

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

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


Собственно АСУ я занимался совсем недолго. Но многого понавилался… Например — учет граждан вместо жителей в ТЗ системы собеса. Жители — это не только граждане с регистрацией по месту проживания, но ещё и лица без гражданства, иностранный с видом на жительство, лица БОМЖ с регистрацией по месту пребывания и так далее…

А потом случится младенец-подкидыш (то есть вообще без документов), которому нужна срочная ВМТ по квоте минздрава и начинается котовасия с выделением денег личным решением Губернатора. Потому обойти баги проектантов, решивших «не автоматизировать бардак» на уровне ниже губернаторского не реально.

Лично знакомый пример
Лешка родился глухим. редкая генная мутация. Нужна кохлиенарная имплантация (процессор, имплантируемый прямо в мозг). Стоимость аппарата, который вещается на ухо — 20 тысяч евро, сама операция — сильно дороже. Делать её надо до года. Квота Минздрава получена, случайно освобождается место в очереди. И тут выясняется, что нужен СНИЛС. СНИЛС делается примерно месяц, а свободное время у медиков — через пару дней.

Решалось это через руководство минздрава и пенсионного фонда. И, скорее всего, через ручную правку в базе. ПФР в обход системы вручную срочно выдал номер СНИЛС, а минздрав — вручную ввел его в базу без подтверждения со стороны базы ПФР.

В итоге Лешка сейчас учиться в обычной, массовой школе. Была бы операция на полгода позже — только школа для глухих. Имплант — не панацея, там всего 12 частот. А тот, кто до года не слышит человеческой речи — никогда не научится нормально говорить.


Надо понимать, что в жизни бывает всё. Абсолютно всё. Если вы думаете, что смерть — это навсегда, то могу рассказать историю, как одна девушка пошла в больницу по документам другой и умерла там. Если вы думаете, что у человека в любой момент времени только одна фамилия — читайте повесть о несчастной Королеве.
Знание 1с мне никогда не мешало писать на С++, C#, PHP, JS, и даже на Руби сделал небольшой сайтик.
А уж сейчас 1с вообще взрослая и серьезная платформа. Как вам например: https://github.com/silverbulleters/vanessa-behavior?

Ну, вот вы, видимо, и относитесь к тем редким людям, сумевших пожить в обоих мирах про которых я слышал, но не видел. Теперь слышал на одного больше :)
Я ведь и не говорил, что знание 1С чем-то мешает, я просто наблюдение привёл, что миры редко пересекаются. А вот вы, как человек из двух миров, наверное, можете обоснованно рассказать почему так происходит.

Просто 1с (как и САП например) покрывает такой объем бизнес-потребностей, что можно жить внутри этой экосистемы, и не знать ничего за пределами, и при этом хорошо зарабатывать. К тому же в 1с за деньгами приходят многие люди, которые не являются программистами по призванию. Например мой сокурсник, которому я помогал с лабами на с++, занялся 1с-ом (и вообще программированием) только после вуза, и очень успешно — его сильнее всего мотивировали деньги.
Хотя конечно, если выходить за пределы 1с, то становится гораздо интереснее. Помню в молодости, когда я работал 1-сником внедренцем в одной дочке газпрома, один сложный расчет (решение системы уравнений для расчета себестоимости списания за месяц) на 1с делался около суток. Ну неоптимизирована она для числовых операций. Тогда я написал внешний компонент на С#, который управлялся за пару минут, и на меня посмотрели как на волшебника :)
Да, скорость выполнения математических операций в 1С крайне низкая. Вот мой бенчмарк на разных ЯПах: https://github.com/Areso/Performance-Test
Да, скорость выполнения математических операций в 1С крайне низкая. Вот мой бенчмарк на разных ЯПах: https://github.com/Areso/Performance-Test


Там основные тормоза на типовых задачах — это БД, а вовсе не математические операции.
Там и без математики есть что оптимизировать за некоторыми. Лично ускорил обработку данных, написанную по принципу «Читаем все данные, меняем одну запись, пишем все данные» в цикле :/ Вместо 12 часов — 10 минут.
я никогда не видел человека, перешедшего с 1С куда бы то ни было.

Здравствуйте, я такой человек. Сейчас пишу на C#+SQL, но и других технологий не чураюсь. Ваше представление о программистах 1С представляет собой просто сборник стереотипов. Я примерно такого же мнения был о маркетологах, пока не довелось встречаться с девушкой, проводившей серьёзные маркетинговые исследования и немножко вникнуть в суть её работы.

Да, теперь я слышал/читал о двух таких людях :)
Но, по-прежнему, ни одного не видел :) :)
А какие у меня стереотипы? Я просто рассказал то, что видел своими глазами и слышал своими ушами. Ну, да, было это чуть меньше, чем сто лет назад, но я же не виноват, что тогда именно так оно и было :)

Люди — разные. Программисты — разные. Программисты 1С — разные. Неоправданное обобщение из разряда «все/ни один», или там «всегда/никогда» — и есть стереотип.
Кто-то из 1С-ников в 1С пришёл с тех же FoxPro или Clipper-а, кто-то решил, как я, что это будет хоть какой-то старт, если нет опыта, кто-то просто денег побольше хотел. И ещё два десятка мотиваций и вовсе необязательно «Программист 1С — это прежде всего бухгалтер». В 1С сейчас тот же план счетов далеко не на первом месте по значимости, есть огромное количество людей, которые пишут на 1С и о бухгалтерии имеют очень смутное представление.
и вовсе необязательно «Программист 1С — это прежде всего бухгалтер»

Ну, так я как раз и не думаю, это стереотип моего собеседника. :)

Ваш стереотип, зато, что ни один 1С-ник из 1С никогда не выбирался. Это мягко говоря, не так. Всё зависит от двух вещей:
— Умеет ли он что-то помимо 1С. Часто умеет, особенно, если начинал не с 1С.
— Хочет ли он всю жизнь заниматься только этим. Поскольку многих творчество на работе интересует гораздо меньше денег — много тех, кто остаётся. Но бывает и по-другому. Я б сказал, 80 на 20.
Ваш стереотип, зато, что ни один 1С-ник из 1С никогда не выбирался.

Ну-у, это вы сами придумали! Мой тезис — слышал о таких, но живьём не видел. Ничего более.


Умеет ли он что-то помимо 1С. Часто умеет, особенно, если начинал не с 1С

О! :)


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

Ну, вот а по моим наблюдениям, в остальном мире ровно наоборот — творчество на работе многих интересует больше денег. Вот и граница этих двух миров нащупалась :)

Если под «остальным миром» понимать «мир программистов» — то да, пожалуй, их(нас) творчество интересует. Но есть ещё более «остальной мир». И там всё несколько по-другому. Я это явно ощущаю, когда пересекаюсь с бывшими одноклассниками — большинство свою работу не любят, но «платят хорошо», и это главное. Есть исключения, но как раз в том же объёме — 80 на 20.

Пирамида Лебедева гласит:


В любой компании, организации или тусовке действует соотношение, проиллюстрированное нашей диаграммой.

image

Ваш стереотип, зато, что ни один 1С-ник из 1С никогда не выбирался


А зачем?
Там хорошие деньги. И надежные.

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

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

Собственно, что и требовалось доказать :)
А зачем?

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


Если вам скучно где-то, то не работайте там, в чем проблемы-то?

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

Мне — не скучно.
У меня задачки более чем не типовые.

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

Далеко ходить не будем
Нынче даже студенты многие ищут денежное место. Мол, не до того мы поступили и уже выучили кучу всякой всячины за пару-тройку лет универа, чтобы получать меньше, чем промоутеры/кассиры/подставьте_другую_малооплачиваемую_работу_по_вкусу. Пусть даже и работа интересная.
По моему мнению, это происходит из-за того, что интересность работы — понятие относительное, а вот величина заработка — понятие абсолютное. А вот что многим (не всем, конечно) студентам действительно интересно, так это развлечения, хобби, гулянки.


Тут же в комментах это написали, рядом.
Если вам скучно где-то, то не работайте там, в чем проблемы-то?

Я «там» и не работаю.
Я про другое, этот 1С мир практически не пересекается с остальным миром программирования. Я видел людей, перешедших из бейсика в си, из си в яву, из явы в дотнет, из питона в яваскрипт, даже из пхп в руби :) и огромное количество разных других вариантов (не говоря о владении годным для практического использования несколькими языками), но я никогда не видел человека, перешедшего с 1С куда бы то ни было.


Ваш мир просто не пересекается. Потому и не видели.

Я прекрасно работаю и с 1С и с golang одновременно.
Буквально сегодня.

Есть (проданные заказчикам) мои программы и на C# и на Delphi, есть коммерческие веб-сайты с кучей JS.

Скоро, думаю, присоединятся программы на Android и iOS (скорее будет использоваться Dart)

Ну а у меня есть знакомые, которые уже 20-й год лабают только на PHP и немного на JS. И что?
Я про другое, этот 1С мир практически не пересекается с остальным миром программирования.
Ваш мир просто не пересекается. Потому и не видели.

Я именно так и сказал :)


Ну а у меня есть знакомые, которые уже 20-й год лабают только на PHP и немного на JS. И что?

Да ничего. Я ж неоднократно сказал, что это исключительно моё личное наблюдение. Людей перешдших с пхп на, скажем, яву или там руби я встречал неоднократно. Людей, перешедших из мира 1С в остальной мир лично я не встречал, хотя в индустрии давно и многого повидал. Слышать слышал, видеть не видел. Скорее всего, это от того, что это страшная редкость.

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


Ruby — это вполне себе альтернатива PHP для тех же целей. То есть по сути они никуда не перешли.

А что, простите, вы в качестве альтернативы 1С видите?
Настройщик 1С — действительно больше бухгалтер, чем программист.


Давайте я переведу на нормальный язык.

В мире 1С достаточно большие деньги крутятся.
И чтобы их зарабатывать тебе нужно хорошо знать предметную область.

С учетом того, что прикладная платформа уже готова — изобретать велосипеды не нужно (редко нужно).

Строго говоря, прикладную область хорошо бы знать везде.
Но в типовых задачках (Android, веб-сайтики) редко когда нужно так глубоко погружаться.

Таким образом, там, где не 1С-программист может тратить свое время на решения вспомогательных задач (ну, скажем, логгер делать), то там программисту 1С нужно решать прежде всего прикладные задачи.
Ну мы-то как раз платформу делали… Несостоявшегося убийцу 1С. Собственно я начальником группы тестирования был.

Что касается погружения в предметную область — то в любой автоматизации так. Команда приходит на завод, понимая лишь азы техпроцесса. А уходит с завода, объясняя тонкости заводских технологам со стажем в 20 лет.
Специфика там больше бухгалтерская. План счетов понимать надо и так далее… Но это с любой СУБД так.


Неча там понимать.
Все просто как 2 копейки.

Остаток = Было + Приход — Расход.

Ну назовите это более умными словами Сальдо, Дебет, Кредит.
Суть — крайне проста.

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

Обычному программисту нужно знать эту формулу
Остаток = Было + Приход — Расход

Все остальное по задаче — расскажет бухгалтер.
ага! Конечно! Нормальная логика: есть машина, у неё один двигатель и один кузов. А у бухгалтеров есть амортизация. И пока она не прошла — списать с баланса трудно. В результате в одной конторе на балансе был зилок с двумя двигателями.

Насчет обратного (один двигатель на два зилка) — не знаю, может тоже иногда бывает. А может и не бывает.

И чтобы понять, как строить базу, где 1:1, где 1;N, где N:M нужно вагон специфики знать.

Ещё примеры хотите?
ага! Конечно! Нормальная логика: есть машина, у неё один двигатель и один кузов. А у бухгалтеров есть амортизация. И пока она не прошла — списать с баланса трудно. В результате в одной конторе на балансе был зилок с двумя двигателями.


Зачем описывать в программе как там реально на машине установлено?
Что, она ездить без этого не будет? Робот, управляемый из 1С непосредственно?

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

Можно было и по другому решить. Скажем, разукомплектовать автомобиль, учесть, что старый двигатель снят. Так логичнее было бы. Но решили иначе — их дело.
Мне немного странно объяснять азы на хабре… Есть дизайн таблиц в товарном учете. И мы не можем в одной записи сделать поля «госномер», «серийный номер машины», «номер двигателя», «номер кузова». И в формах не можем представлять данные так. Мы должны всюду понимать, что с для одной машины может быть N госномеров и N номеров двигателя.

А дизайн форм — это 100% работа 1С-ника.
Мне немного странно объяснять азы на хабре… Есть дизайн таблиц в товарном учете. И мы не можем в одной записи сделать поля «госномер», «серийный номер машины», «номер двигателя», «номер кузова».


Сударь про понятие «Свойство», которое в 1С уже лет 15 как — видимо и не слыхивал? Ну а в поколении V8 это понятие введено непосредственно в прикладные объекты платформы, до этого, в V7, реализовывалось средствами типовых конфигураций.

И это все реализуется БЕЗ ИЗМЕНЕНИЯ конфигурации.
Не слышал. На 1С я только тесты писал, мое дело было — баги в функциях и компиляторе исправить. А Ultima-S — клон 1С 6.0. То есть вообще свойства в Ultima-S были, но в объектной базе данных (для товарного учета), а не в 1С ной части. А до того — группой тестеров руководил. Но опять-таки на той же Ultima-S, совместимой с 6.0.

Дай ссылочку на описания свойств. Можно там любой товар запихать в свойства иного товара? А какие есть отношения между объектом и его свойствами? А классы есть? А наследование классов?
Дай ссылочку на описания свойств. Можно там любой товар запихать в свойства иного товара? А какие есть отношения между объектом и его свойствами? А классы есть? А наследование классов?


http://www.pvobr.ru/courses/course231/page974.htm
В типовых конфигурациях уже встроены. И используются во многих отчетах и т.п.
То есть программисту писать вообще ничего не нужно.

Если ваша задача не вписывается в эту концепцию, то можно добавить отдельным регистром, справочником или характеристиками — но это уже с программистом.
Гм, это не то… Есть зилок, он учитывается на балансе. Его двигатель — учитывается отдельно (тоже на балансе). И надо получить отчет с сортировкой по номеру машины или номеру двигателя. Но с учетом того, что в любой момент появляется этот самый зилок с двумя двигателями.

Это все вот к чему…

действительно сложную бухгалтерскую специфику в 1С должны знать только профессиональные бухгалтера.


При создании КИС (в том числе на 1С) нужно не забывать, что в бухгалтерии много чудес. И алгоритмизируя бизнес-процесс не выплеснуть вместе с водой и ребенка зилок с двумя двигателями.
При создании КИС (в том числе на 1С) нужно не забывать, что в бухгалтерии много чудес.


99,9% работает на типовых (пусть даже и сильно дописанных иногда) конфигурациях.

Там задачу программистам ставили хорошие специалисты-методисты из 1С.
Для прикладного разработчикам на месте ничего этого не нужно уже знать.

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


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

Гм, это не то… Есть зилок, он учитывается на балансе. Его двигатель — учитывается отдельно (тоже на балансе). И надо получить отчет с сортировкой по номеру машины или номеру двигателя. Но с учетом того, что в любой момент появляется этот самый зилок с двумя двигателями.


Прекрасно реализуется именно свойствами.
Там задачу программистам ставили хорошие специалисты-методисты из 1С.

То ли за 20 лет у 1С изменилась бизнес-стратегия, то ли я туплю. Изначально 1С специально поставлялся с хреновой конфигурацией ради появления рынка настройщиков 1С. А уже настройщики — проталкивали использование 1С.

Прекрасно реализуется именно свойствами.

Видимо торможу, но я не могу понять, как именно сделать «прекрасно» без написания кода.

Для меня хорошая реализация — это когда мы у двигателя указываем машину — и по машине сразу видим все относящиеся к ней двигатели. Ну и наоборот. Причем все это с контролем (двигатель не может иметь владельцем тележку) и без заведения лишних справочников.

Но я тут настолько чайник…
То ли за 20 лет у 1С изменилась бизнес-стратегия, то ли я туплю. Изначально 1С специально поставлялся с хреновой конфигурацией ради появления рынка настройщиков 1С. А уже настройщики — проталкивали использование 1С.


Ну на сегодня 1С самая богатая фирма из сферы производства десктопного ПО — и с планированием конфигураций там все путем.

Уже лет 15 как начались заметные сдвиги, еще на предыдущей версии V7.
А на версии V8 вообще все серьезно продумано.

Причем все это с контролем (двигатель не может иметь владельцем тележку) и без заведения лишних справочников.


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

Богаче Микрософта? :-) Ну это вы IMHO загнули…

А вообще, если бы они изначально не делали плохие конфигурации и не отдал бы половину денег настройщикам — не было бы ни их богатства, ни такой массовой профессии «программист 1С».
Богаче Микрософта? :-) Ну это вы IMHO загнули…


В РФ.
И даже в ex-CCCР
Лаборатория Касперского — оборот $619 млн (2015 год)
1С — $520 млн (2010 год)

Ну так, равны сравнимы по обороту.


Разница в 5 лет вас не смущает?
А вообще, если бы они изначально не делали плохие конфигурации и не отдал бы половину денег настройщикам — не было бы ни их богатства, ни такой массовой профессии «программист 1С».


Наеду: боюсь, вы вообще не понимаете о чем говорите.
Это «не бага, а фича».

1. Любой сколько-нибудь сложный продукт нуждается во внедренцах непосредственно на месте внедрения.

2. Когда у внедренца есть возможность подправить продукт под особенности конкретного клиента, без обращения к производителю продукта — это круто.

3. Сделать изменяемую конфигурацию, предоставить возможность подгонять по требованиям на месте — это дополнительная и довольно большая работа разработчиков платформы. То есть это запланировано и это стоило больших затрат 1С. Закрытую платформу чисто технически сделать было бы проще и дешевле.

4. Те, кто не смогли предоставить подобной гибкости, а все доработки, ради большего получения бабла, пытались сделать централизовано или только в своих авторизированных представительствах (Парус, Галактика) — вымерли. Нужно было делиться с внедренцами-«настройщиками».

Разумеется это была фича. Судя по вашим словамсейчас этой фичи уже нет.

20 лет назад работа настройщика начиналась со сноса типовой конфигурации и установки собственных скриптов. Сейчас по вашим словам:
99,9% работает на типовых (пусть даже и сильно дописанных иногда) конфигурациях.

Мне кажется, вы очень молоды, если не знаете, что куча продуктов имеют встроенные языки и ими конфигуруются. Даже бесплатные антивирусы иногда имеют свой язык. Я уж не говорю про разные SCADA. Но нету ни «программистов InTouch»: ни «программистов MasterScada». Есть единая профессия — разработчик АСУТП.

Появление профессии «Настройщик 1С» вызвана именно умышленными недоделками и умышленным затруднением кодирования. Если бы для настройки использовался язык общего назначения (BASIC, LUA...), то её бы делали местные сисадмины. А из-за умышленной специфики 1С появилась отдельная профессия.

Мне странно, что человек, имеющий отношение к 1С, не понимает разницы между большими и малыми предприятиями. 1С была разработана для малых предприятий, сейчас может использоваться на средних. А на больших — упс, не масштабируется туда технология. с обработкой на клиенте. Примерно 100 рабочих мест — предел для 1С.

Галактика — это ERP-система. И намного проще разработчику подпилить систему для Газпрома или ВАЗа, чем делать возможность «допиливания на месте».

В качестве упражнения — подумайте про систему учета писем, посылок и бандеролей для «почты России». Каждое почтовое отделение, конечно, можно представить как 2-3 склада. А что с масштабированием, а? :-)

Вот поэтому не только галактика, а вообще все ERP-системы допиливаются изготовителем или авторизованными им конторами. Внедрение лидера рынка (SAP/R3) это вообще очень долгий процесс.

К счастью, ваши сказки о смерти той же Галактиики сильно преувеличены. Она не умерла, она просто не используется в малых предприятихю
Могу сказать что бывает. У меня знакомый программист 1С, но он так же кодит и для андроида. У меня был шок, когда я об этом узнала. Конечно о качестве кода судить не могу, т.к. его не видела.
Новые фреймверки, новые фичи языков. Человек, не следящий за изменениями, через пять лет не будет понимать код, написанный на том же языке, но с использованием новых стандартов. Замыкания, автовывод типов — ведь все это появилось настолько недавно, что даже не во всех вузовских курсах об этом говорят. Языки развиваются, тот же яваскрипт уже не поймешь, если не догоняешь нововведений EC6, а знаешь только основы. Про фреймверки и скорость их появления и обновления можно и не говорить.
html-теги


Неофит? Студент?

Уверяю вас, выучить новый язык — это раз плюнуть.

Только первый язык кажется сложным.

Они же похожи.
Только первый язык кажется сложным. Они же похожи.

) перейдите с JAVA на Brainfuck
перейдите с JAVA на Brainfuck


Повторяю свою фразу цитатой:
«Уверяю вас, выучить новый язык — это раз плюнуть.»

Что там учить-то в этой Брейнфаке-то?

Использовать его сложно — это другой вопрос.
Учить — не сложно.
Хм, ок, пойдем дальше. Что такое для вас «выучить» в таком случае? Изучить синтаксис? Мне кажется, ваш оппонент имел в виду изучить язык/экосистему до степени возможности написания программ средней руки.
НЛО прилетело и опубликовало эту надпись здесь
Мне 50 лет и я не вижу проблем выучить новый язык.

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

1. Во многих языках имеется своя специфика решения тех или иных проблем. Несмотря на то, что в C++, Delphi, Pyhton'e и Ruby имеются объекты, работают с ними совершенно по разному. При этом, я свободно владею парадигмами программирования на указанных выше языках (и не только), но современный JavaScript, по разным причинам, причисляю к семейству BrainFuck'ов.

2. Если парадигмы, пусть иногда и головоломные, можно принять, понять и простить, то для освоения очередного фреймворка, потребуются гораздо более значительные усилия — банально из за значительно большего количества сущностей. Причем можно потратить время впустую, т.к. разработчик в версии 2.0 или 3.0, решит полностью поменять API.

Сейчас программирование уже сильно сегментировано. Так, высококлассный специалист по фронтендам часто ни в зуб ногой в программировании с помощью шаблонов на C++. Причем настолько, что не в состоянии исправить даже небольшую ошибку коллеги который в отпуске. И наоборот, человек специализирующийся на микроконтроллерах крайне редко может написать качественный фронтэнд. И по большей части это обусловлено именно очень большими объемами информации в каждой предметной области.
Тут вопрос чуть иной — а надо ли выгодно ли использовать фреймворки при такой кривой обучения?
выгодно ли использовать фреймворки при такой кривой обучения?

Зависит от фреймворка, ведь пишут их не от хорошей жизни, а потому, что без них создание аналогичного приложения будет еще более сложной, а часто и неподъемной, задачей. И здесь у молодых естественное преимущество — API, это просто значительный объем информации, которую они могут усвоить гораздо быстрее.
я, конечно, ересь скажу, но…

Боюсь, что пишут их больше для славы и денег. Много ли фреймворков используется в opensource? А используют их больше из-за hype driven dvelopment.

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

Если у нас 95% функциональности приложения можно переложить на фреймворк — он вам нужен. Если только 5% — быстрее писать самому.

Ну и первое приложение — лучше писать самому.

В любом случае, в упомянутой вами задаче (качественный фронтенд для web-интерфейса микроконтроллера) лучше без фреймворка. Ибо качество тут — это ещё и малый размер. А фреймворки все больше жирные.

Потому как решаемые фреймворками задачи — в этой ситуации можно и вообще не решать. Какая разница, как будет выглядеть встроенный вебсайт на экране мобильника, если с мобильника его увидят один раз за 10 лет?
Боюсь, что пишут их больше для славы и денег. Много ли фреймворков используется в opensource? А используют их больше из-за hype driven dvelopment.

Много. Если брать сишный мир — всякие glib, gtk. Плюсовый — qt, куски boost'а вполне можно воспринимать как фреймворки. Если взять java, то начиная от использования сервлетов (кусок EE, т. е. по сути тоже фреймворка, хоть и с пачкой альтернативных реализаций), spring, guice.


Это чисто навскидку, за пару минут.

Боюсь, что вы путаете фреймворки, API и библиотеки. Фремворк — это прежде всего каркас приложения, к которому мы дописываем отдельные части. Все остальное — это уже не фреймворк.
А используют их больше из-за hype driven dvelopment.

У нас ситуация противоположная — никаких «hype», все очень прагматично. И в этом мой возраст, и возраст некоторых членов коллектива играет положительную роль. Конечно, все не настолько консервативно — программисту на C++ не возбраняется по полной использовать фичи из C++14, а так-же некоторые расширения GCC.

В любом случае, в упомянутой вами задаче (качественный фронтенд для web-интерфейса микроконтроллера) лучше без фреймворка.

На самом деле, фронтенд там весьма солидный, крутится на не слабом сервере, с одновременным доступом нескольких сотен пользователей. Но, опять же, пишет его человек в возрасте 26 лет, специально принятый на работу под это дело. Использует как широко известные (типа jquery), так и более маргинальные внешние библиотеки. Это все согласовывается со мной в частности, и именно отсюда я составил вышеупомянутое мнение о классовой принадлежности JavaScript'a.
Зависит от решаемых задач. Мне кажется, что мнение, что для любой задачи на JS нужен фреймворк — сильно преувеличено. Фреймворки упрощают написание больших программ, но их изучение лишь замедляет разовую разработку программ небольшого и (иногда) среднего размера.

Мне тоже проще было отдать задачу на JS+HTML+CSS+PHP на аутсорс. Но это не значит, что я не могу её отладить, когда аутсорсер сваливает в туман. :-) Правда размер был небольшой — веб-интерфейс береговой радиостанции.
но их изучение лишь замедляет разовую разработку программ небольшого и (иногда) среднего размера.

Это, кмк, верно ровно до того момента, когда разовая разработка станет двухразовой, а потом трехразовой. Т.е. мы оказываемся в ситуации «если бы я знал, что потребует повторить, использовал бы вон то и модифицировал под конкретный случай, а теперь все опять писать чуть не с нуля, потому что предыдущая первая реализация слишком жестко завязана на XYZ».
и тут человека настигает «синдром второй системы» и в мире становится ещё на один фреймворк больше. :-)
Так или иначе: я не знаю, как это называется в психологии — по-любому, есть какое-то название.
Я это в школьничестве называл «синдром ожидания троллейбуса». Он приводит в к тому, что с течением времени при значальной неудаче мы еще сильнее ухудшаем результат, причем чем дальше — тем сильнее.
Человек приходит на остановку и ждет троллейбуса. Ему идти пешком до следующей — 15 минут. Он стоит, видит по расписанию, что рогатый должен прийти в 12:08. Стоит, ждет. Прошло 2 минуты после 08, 3, 4, 5. И тут наступает переломный момент — ты с одной стороны начинаешь думать, что потерял уже 5 минут, и если бы ты сразу пошел пешком, то через 10 минут уже был бы дома — может троллейбус сломался? А так ты потратишь не 15 минут на дорогу, а 15 + 5 минут ожидания. Но ты по-прежнему надеешься, что троллейбус придет, и время ожидания + время в дороге (0,5 минуты) будет меньше 15, т.е. ты все равно выиграешь время. В итоге ты остаешься ждать и теряешь все больше и больше времени. Когда наступает следующий переломный момент — когда прошло уже 15 минут, ты понимаешь, что ты потерял то время, которое у тебя было на дорогу пешком, и потерял его из-за ожидания транспорта. И с этого момента ты уже точно остаешься ждать, потому что тебе жалко потраченного на ожидание времени. В конечном итоге ты тратишь 25 минут на ожидание, все же отправляешья пешком, и через 2 минуты, когда ты уже отошел далеко, троллейбус подъезжает. В итоге ты проиграл еще больше — и 25 минут ожидания впустую, да и еще 15 минут на дорогу.
И вот эта психологическая ловушка — когда тебе жаль уже потраченных усилий (времени и тп) заставляет выбирать наиболее неоптимальное решение. Т.к. в этой ситуации оптимальным было бы подождать несколько минут и отправиться пешком.
Иногда бывает так, иногда не так. Обе ловушки вполне описаны у Брукса.

Но в реализации первой системы без фреймворка есть свой плюс: дальше уже фреймворк выбирается с пониманием, где он упрощает разработку, а где усложняет её. То есть приходит понимание за что же мы платим временем на обучение и борьбой с кривостью фреймворка.
Тут должна быть реклама Яндекс.Транспорта :)
НЛО прилетело и опубликовало эту надпись здесь
Поэтому мы сейчас отказались от ОС (linux).

  • Было 3 криисталла (ОЗУ, ПЗУ, Soc) — остался только SoC.
  • Было нужно 32 мегабайта ОЗУ — влезаем в 512 килобайт.
  • Было нужно 16 мегабайт ПЗУ — влезаем в 512 килобайт.
  • Раньше программу можно ыбло считать из ПЗУ или ОЗУ — сейчас она внутри SoC и считывается только электронным микроскопом. Так что получили ещё и защиту от китайцев
  • Раньше устройство на российской элементной базе должно было занимать чемодан — теперь оно поместится в плату. Собственно ради российской элементной базы все и затевалось


Ну не 100% отказались, задачи и очереди нам FreeRTOS делает. Но работу со всеми устройствами — приходится писать самостоятельно или искать библиотеки.

Как ни странно — но отказ от ОС нам обошелся не так дорого. Скорее всего потому, что до этого программа работала на очень разных ОС (MS-DOS, Windows, linux, freeBSD, QNX...).

Зато преимуществ — выше крыши. Если кто-то (как и мы) самостоятельно делает свои платы, то рекомендую рассмотреть этот путь. В качестве SoC сейчас STM32F7, планируется STM32H7 (ждем сэмплов).

P.S. FORTH без ОС, с редактором, отладчиком и системой хранения текстов на диске — 12-16 килобайт. Тоже рекомендую, но для очень маленьких машинок.
Прибористы, небось? Чем занимаетесь?
Высокоточной спутниковой навигацией мы занимаемся.

Вот судовой спутниковый компас на linux
image

А вот тот же компас без linux, для беспилотника



Правда в первом ящике половина — блок питания, но все равно, разница приличная.
Ващще поддерживаю. Мы даже не рассматривали использование ОС.Нормальным конечным автоматом можно разрулить почти всё с хорошей экономией ресурсов.
НЛО прилетело и опубликовало эту надпись здесь
SoC — это вполне себе компьютер. Ну как пример, современные Intel Atom X7 — это SoC.

Просто у АРМ процессорное ядро компактней, поэтому в кристалл можно запихать больше устройств. Но выбор между ОС + приложения и монолитной системой есть у любых машин.

Другое дело, что при необходимости запуска произвольных программ (desktop) нам нужна ОС (или виртмашина вроде JAVA). А если комп специализированный для конкретной задачи — всегда есть выбор.

Банкоматы, например, работают под OS/2 и Windows XP. Мобильники — и так и так. Роутеры — обычно с linux. Смартфоны — почти все с ОС. Стиральные машины — вроде без ОС. Персоналки… первые персональные компьютеры были без ОС, например БК-0010.
НЛО прилетело и опубликовало эту надпись здесь
Так ведь основной вопрос — будет ли на этой машине исполняться иные программы? Если будут — скорее всего нужна ОС, причем именно та, которую эти программы используют.

Если на машине будет исполняться только одна программа — смотрим, насколько у нас специфичное железо. Если нужно программу запускать на разном железе — очень полезна ОС.

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

И выбор этот состоит в удорожании цены аппаратуры (плата за ОС), в ухудшение скорости обмена с железом (плата за ОС), в обмен на упрощение разработки.

Как думаете, есть ОС в игровых приставках и игровых автоматах? А вот в банкоматах — точно есть.
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Вы можете позволить себе написать свой фреймворк, развивать его и поддерживать.

ДА. Можем. Дважды участвовал в таких проектах. Сложность не в написании, сложно вывести свой фреймворк на рынок, Потому что разница между программой и комплексным программным продуктом — 9 раз по трудоемкости.

Быстрее взять готовый фреймворк и сосредоточиться на бизнес-задаче.

Очень спорно. Если фреймворк соответствует задач на 99% — это одно. А если на 50% и придется идти поперек фреймворка… В такой ситуации намного проще отказаться от фреймворка. Ну или выучить другой фреймворк (если есть фреймворк, соответствующий задаче).

Кроме того, люди делятся на аналитиков и синтетиков. И чистому синтетику намного проще написать свой код, чем изучать чужой. Для меня это удивительно (я аналитик), но это так.
НЛО прилетело и опубликовало эту надпись здесь
Скорее всего у вас маленький опыт. При серьезном использовании любого фреймворка всегда упираешься в ситуации, где надо изучать код.

Рассказ про баг в linux
WebSerever на MOXA IA-3341LX, при финальном тестировании выясняется, что примерно через 3 часа затыкается обмен с ключом защиты по USB. Разработчики ключа — не понимают в чем дело, до разработчиков MOXA — не достучаться. В итоге лезу в код linux, через пару дней курения кода нахожу кусок с ошибкой. И правку — в версии ядра на единичку больше.

Чтобы было понятней, почему просто не проверили на новом ядре. У MOXA свой собственный SoС и порт под него не идет в мейнстрим. Так что переход на свежее ядро — это большая и ненужная нам задача.


Думаете распечатка микрокода процессора бесполезна? Да вот нет… Байку хотите? И в современных SoC багов хватает. Зачастую очень хочется схему SoC посмотреть. Ну хотя бы чтобы понять, на чьей стороне баг.

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


Как делать — должен определять дизайнер приложения, а не фреймворк. Не вижу смысла в ущерб качеству продукта подстраиваться под чужие решения. А на тренды нам наплевать, мы же не сайты делаем. Наши продукты живут по 10-20 лет, так что они заведомо выйдут из тренда.

Пример про чекбоксы
В Windows у чекбокса 3 состояния, а хочется 4. То есть неактивный (недоступный для изменения пользователем) чекбокс тоже должен быть установленным или неустановленным.

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

Windows GUI — хороший фреймворк, но… иногда хочется как в JAVA — отрисовывать все самим на канве.


Тут хоть Workaround available, а не No fix, как у Skylake например: http://www.intel.com/content/dam/www/public/us/en/documents/specification-updates/desktop-6th-gen-core-family-spec-update.pdf
Попробуйте изучить FORTH, APL, СНОБОЛ, LISP, LADDER

Увы, похожи только процедурные языки…

Очень интересно, сколько у вас времени уйдет на понимание FORTH до уровня. когда вы сможете в язык добавить ELSEIF (то, что в других языках является ключевыми словами, в форте пишется на самом форте).
А уж как ломает мозг Пролог…
Лис и пролог я не осилил. А на FORTH и LADDER пришлось поработать…
У нас на вышке LISP и Prolog в обязательном порядке проходили на 4м курсе, как раз, чтобы поломать студентам мозг, показать, что императивное программирование — это еще не все :)
НЛО прилетело и опубликовало эту надпись здесь
Ну вот методичка, см раздел. 4.2. В примере 3 — искомая программа
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
Все не так страшно. Prolog — это язык, на котором записываются соотношения между фактами, а не алгоритмы. То есть это иная парадигма программирования.

Вы APL или FORTH поизучайте — там тоже парадигмы совсем иные, чем в процедурных языках. Сам факт, что можно день читать однострочную программу на APL — ужасно удивляет.
НЛО прилетело и опубликовало эту надпись здесь
Я переделывал мозги на FORTH примерно полгода. Собственно, пока вы не можете на форте написать ELIF — вы его не понимаете. Самый кайф форта — это возможность ввести свои собственные ключевые слова и структуры управления. Форт — это единственный язык, программа на котором компактней по бинарному коду, чем на ассемблере.

APL — это скорее императивный, а не функциональный язык. Просто для подсчета суммы ряда (kX, где k от 1 до 10) мы не крутим цикл. Мы создаем вектор!!! Делаем вектор от 1 до 10, потом умножаем каждый член на Х, потом берем сумму вектора. Всю оптимизацию — делает сам APL.

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

А объединяет форт и APL то, что нормальный размер процедуры на этих языках — одна строка текста.

Типичная машинка, работающая на форте
image


Вспомнили такую?
НЛО прилетело и опубликовало эту надпись здесь
Там как бы не «можно» вводить ключевые слова, там нужно. Ассемблерное ядро форта — 3 килобайта. А все структуры управления и даже компилятор — написаны на нем самом.

APL — не более функционален, чем Си. В Си тоже можно писать длинные выражения с вызовами функций. И в APL можно писать в более-менее процедурном стиле.

Но в целом APL и FORTH — более функциональные языки, чем императивные…

Про «ну погоди» — не помню, от кого-то из форточников была информация.

Данные по процессору КБ1013ВК1-2:
image

Тут или форт — или асссемблер, но форт компактнее ассемблера, особенно если умно настроить кросс-компиляцию.
LADDER создали для замены релейных схем на ПЛК и для этого он годен…
электрик, который «чуть-чуть в ПЛК разбирается» на нем лучше понимает, чем, например, на ST (ну так задумывалось и так есть в некоторых странах/производствах)
У Ladder много плюсов. Например, программы на Ladder поддаются автоматической оптимизации и автоматической проверке на ряд критериев. Кроме того, имея срабатывание аварийного выхода, по ladder можно автоматически (то есть программой) определить, какой срабатывание какого входа вызвало аварию.

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

Я уж не говорю о том, что Ladder запросто транслируется и в IL и в FBD и ST. А вот ST в Ladder увы, не транслируется.
Пресловутый статический анализатор для Ladder — не такая уж и большая программа

вы это для себя делали или говорите с точки зрения теории?
Для заказчиков. Поскольку AST-tree и так собирался ( он для отрисовки нужен), то побегать по дереву и поискать странности — не сложно.

Собственно программ было две (чекер и оптимизатор). Обе не пошли (то есть заказчики их активно не использовали). Да, есть выигрыш в десяток микросекунд на скан, Но читабельность ladder-диаграммы — важнее.

Активно использовался динамический анализ — по срабатыванию аварийного выхода найти вход, который вызвал это срабатывние. Причем с учетом многотактности и прохода через несколько ladder-диаграмм. Собственно основной функций у нас было архивирование всех важных сигналов из контроллеров, так что данных хватило.

Но у динамического анализа нахождение решение — 997 на 1000, ложное решение — 0 на 1000.
Замыкания, автовывод типов — ведь все это появилось настолько недавно, что даже не во всех вузовских курсах об этом говорят.

Эээээ, в каком языке это появилось недавно? В пхп что ли? Ну, так в 1с это вообще не появилось, так и что?

В C++ когда добавили директиву auto?

Вот я и говорю, что в 1С это всё вообще не появилось. При чём здесь с++? Это единственный язык на Земле? Замыкания и вывод типов появились очень давно. То, что в вашем любимом языке их небыло — это проблема языка, не более.

При чем здесь «любимый язык»? С++ недостаточно востребованный? Редкий?
Фраза «это появилось недавно» вовсе не означает, что нечто вообще было изобретено недавно, отнюдь. Это означает, что массово не внедрялось, не использовалось. «Появилось» не «в природе», а «на рынке», условно говоря.

Отвлеченный пример: фазовращатели для ДВС были запатентованы в самом начале 20го века, не позже 20х годов, может и раньше — не помню. Когда это стало массово применяться, так чтобы можно было сказать «появились (на рынке) автомобили с фазовращателями»? Хондовский VTEC появился в 1989, если верить википедии. А запатентована идея была, напомню, в начала века.
При чем здесь «любимый язык»? С++ недостаточно востребованный? Редкий?

Всего лишь один из многих. И если там чего-то нет, это вовсе не означает, что этого нет вообще.


Фраза «это появилось недавно» вовсе не означает, что нечто вообще было изобретено недавно, отнюдь.

Серьёзно? И на каком языке это означает? На стандартном русском, фраза "появилось недавно" означает, сурпрайз(!), — появилось недавно!


Это означает, что массово не внедрялось, не использовалось. «Появилось» не «в природе», а «на рынке», условно говоря.

Товарищ, вас кто-то обманул. Замыкания, как вы говорите, "на рынке" появились и массово использовались не один десяток лет как. Уже некоторые языки, где они массово использовались стали маргинальными, а вы говорите — не внедрялись. И, нет, я даже не лисп здесь имею в виду, а до боли банальный пёрл. Не говоря о руби, питоне, яваскрипте… да даже в дельфи замыкания появились лет на 5 раньше, чем в с++. Оглянитесь уже по сторонам. Мир давно изменился, а вы всё в прошлом веке живёте.

Всего лишь один из многих. И если там чего-то нет, это вовсе не означает, что этого нет вообще.

Разумеется. Я просто привел пример. Судя по тому, что вы пишете, вы не со мной, моим мнением спорите, а с каким-то искаженным восприятием. С ветряными мельницами боретесь, если кратко.

Серьёзно? И на каком языке это означает? На стандартном русском, фраза «появилось недавно» означает, сурпрайз(!), — появилось недавно!

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

Товарищ, вас кто-то обманул. Замыкания, как вы говорите, «на рынке» появились и массово использовались не один десяток лет как. Уже некоторые языки, где они массово использовались стали маргинальными, а вы говорите — не внедрялись. И, нет, я даже не лисп здесь имею в виду, а до боли банальный пёрл. Не говоря о руби, питоне, яваскрипте… да даже в дельфи замыкания появились лет на 5 раньше, чем в с++. Оглянитесь уже по сторонам. Мир давно изменился, а вы всё в прошлом веке живёте.

Читайте внимательно — я написал про auto, а не замыкания.
Товарищ, вас кто-то обманул.

Кстати, вот тута вот обсуждают (обсуждали десятилетие назад) тему " what if COBOL had closures".

Я просто привел пример.

Пример чтобы что? Показать отсталость? Хороший пример.


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

В каком-то альтернативном русском.


Читайте внимательно — я написал про auto, а не замыкания.

Это что-то меняет? Вывод типов появился "на рынке" в широком употреблении примерно настолько же давно. Только он, как правило, более адекватный, чем цппшное auto :), которое и выводом то типов назвать сложно. Поэтому продолжайте, пожалуйста думать, что вывод типов ещё не появился. :) Смешной какой.

Пример чтобы что? Показать отсталость? Хороший пример.

Пример появления чего-то в распространенном языке.

Поэтому продолжайте, пожалуйста думать, что вывод типов ещё не появился. :) Смешной какой.

Читайте внимательнее и не приписывайте мне свои фантазии.
Пример чтобы что? Показать отсталость? Хороший пример.
Пример появления чего-то в распространенном языке.

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


Читайте внимательнее и не приписывайте мне свои фантазии.

О! Отказываетесь от своих слов?


"Фраза «это появилось недавно» вовсе не означает, что нечто вообще было изобретено недавно, отнюдь. Это означает, что массово не внедрялось, не использовалось."


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

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

Появление технологии в распространенном языке.

О! Отказываетесь от своих слов?

Вот еще один пример приписывания мне своих фантазий.

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

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

Ну, и что? Я и другой "популярный" язык привёл. Это говорит лишь о проблемах в этих конкретных языках. К распространённости, появлению и широкому использованию это не имеет ни какого отношения. Тем же лямбдам сто лет в обед а в цпп они, считай, что и не появились ещё. Тоже будете приводить как пример того, что лямбды якобы не внедрены и не используются?


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

Это всего лишь ваши фантазии.


ПОЯВИ́ТЬСЯ, появлюсь, появишься, совер. (к появляться).
1. Явиться, показаться. Появился на вечеринке в новом костюме. Вдали появились огоньки деревни.
2.** Начаться, возникнуть**. Появился новый талантливый писатель. «Морщины на лбу появились.» Некрасов.

Толковый словарь Ушакова. Д.Н. Ушаков. 1935-1940.


НЕДА́ВНО, нареч. В недалеком прошлом, **с недавнего времени**. «В глубоком трауре по недавно умершем муже.» Чехов. Я недавно (живу) в Москве.

Толковый словарь Ушакова. Д.Н. Ушаков. 1935-1940.


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

Ну, и что? Я и другой «популярный» язык привёл.

Зачем вы МНЕ это пишете? Я еще раз объясняю: я только лишь пояснил двусмысленность слов вашего оппонента. Читайте внимательно.

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

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

Толковый словарь Ушакова. Д.Н. Ушаков. 1935-1940.
«появиться недавно» в переводе со стандартного русского означает «начаться, возникнуть в недалёком прошлом, с недавнего времени». А вовсе не то, что вы себе придумали.

Это не является контр-аргументом к моим словам, потому что есть неопределенность того, где именно что-то началось, появилось и так далее, так что словарная статья этому не противоречит.
Приведу еще раз тот же пример: «в 2005 появились автомобили с фазовращателями» — это может означать появление этих автомобилей на рынке в данной местности, начало их эксплуатации, а не появление первой модели в мире вообще.