Комментарии 186
«Прототип реактора готов к испытаниям. Hас не допустили. Даже на территорию — сказалось криминальное прошлое. Глупо с их стороны. Откуда им знать, что в инструкции давление смеси в атмосферах, а на пульте градуировка — в фунтах на квадратный дюйм… Реактор проплавил пол, три этажа и ушел метров на 70 в грунт. Там и остался, исчерпав запас горючего. Как и предполагалось.»
Говаривал мне: «Слушай, брат
Как мысли черные к тебе придут,
Откупори шампанского бутылку
Иль перечти
Ну те, что ты читал «в лаборатории»,
Те самые, которые «уже давным-давно» ».
15 июня
Первый рабочий день. Рад. Учеба позади. Буду приносить пользу обществу. Сказал об этом новому шефу. Он посмотрел как-то странно.
16 июня
Осваиваюсь. Знакомлюсь со сленгом и основными ценностями нового коллектива.
17 июня
Учился обслуживать оптику. Тонкослойным методом. Это крайне экономичный и многоцелевой прием. Суть — залпом и без закуски выпивается грамм 50 спирта. Энергичный выдох на обрабатываемую поверхность с последующим воздействием мягкой ветошью.
18 июня
Появился еще один новичок. Математик. Лохмат, небрит, в глазах жажда деятельности. Вылитый я.
19 июня
Проходили базовый ликбез. Экскурсия по основным установкам, одну из которых вверяют нам. Мощные гидроприводы. Нагревательная камера. Говорят, рельсы разрывать можно.
23 июня
Действительно, можно. Однако лучше, пользуясь инфракрасными нагревателями, разогревать обеды. Куры в собственном соку тоже получаются ничего.
Из-за багов в программах космические корабли падают, взрываются и банально промахивается мимо цели с того момента как ЭВМ вообще стали ставить на них. Так что ничего нового не случится
Так что тенденция печальная.
Проблема не столько в оборудовании, сколько в перестраховщиках. Если пилотам предписано всегда использовать максимально возможный уровень автоматизации — откуда в принципе могут взяться те самые навыки, которые и отличают пилота от "оператора"?
понятно, что инструкции для того и пишутся, чтобы их соблюдать, но когда случается ситуация, инструкцией не предусмотренная, замуштрованный человек теряется и допускает ошибки или вообще тупит в стену
плюс склонность начальства действовать преимущественно репрессивными методами не лучшим образом сказывается на выявлении и устранении ошибок
«наши/не наши» тут совершенно ни при чём, российское руководство в последнее время склонно бездумно копировать западный опыт
Ну да. В пилотируемых есть кому вмешаться, да ещё непосредственно на самом объекте. Жить захочешь — вмешаешься (если что-то пошло не так).
А беспилотные-то железяки — сами жить не хотят. Их ещё надо обучать желанию жить. Человека желанию жить учит жизнь многие годы его жизни. А железяку кто научит желанию жить? Пока ещё только люди. А тут уже возможны ошибки.
Это понятно. Я имею в виду, что если железяку не заставить хотеть жить, то сама она и не будет хотеть жить. Она (обычная сильно простая железяка) сама себе смысл жизни не придумает. Только то, что ей люди сказали — то она и будет делать. А вот человека и заставлять хотеть жить не надо — он (психически здоровый) хочет жить сам без пинка и подсказок о том, что жить ему надо! :-)
Берите выше, ждём первой аварии из-за софта у пилотируемых кораблей SpaceX! Просто в целом реже буду ездить, начальство-то совершенно внезапно обучилось новым технологиям связи.
Жду не дождусь, когда обычный айтишник, типа меня, будет говорить
— Не, сегодня я не полечу на своем SpaceX в офис, начальство наконец освоило новую голографическую технологию связи с имитацией полного присутствия.
ждём первой аварии из-за софта у пилотируемых кораблей SpaceX
У них там управление на сенсорных экранах, драйвер откажет — и прилетели (если что, не злорадство ни разу, я прямо беспокоился за это грешное управление (возможно, как любой рождённый (ещё) в СССР и учившийся у ещё более рождённых в СССР)).
galspace.spb.ru/orbita/29.htm
![image](https://habrastorage.org/getpro/habr/comment_images/ab0/8ed/5c0/ab08ed5c0dbc9ca121dc44d7cd691e54.jpg)
Ну индикацию — понятно, можно и на дисплеях сделать.
А вместо РУДов (рычагов чуть ниже центра кадра) — в SpaceX кнопки?
Собственно у боинга неудачное испытание пилотируемого корабля было именно из-за некачественного софта.
PS про 6 кВ двигатели. Делали систему управления насосами на ТЭЦ. Они, как раз, от 6 кВ запитаны. Сидели в комнатке над машзалом. Я своей точкой опоры каждый раз чувствовал, что насос отключился и закрылся обратный клапан.
А с частотным приводом вообще весело получилось. Из-за тех же обратных клапанов. Они там много лет стояли и никто их не трогал — просто, проблем с ними не было. А тут мы… Пробуем плавно замедлить насос перед остановкой. Прибегают операторы с выпученными глазами, мать-перемать… В общем, от многолетнего отсутствия обслуживания обратные клапаны не хотели закрываться нежно, им удар подавай от грубой остановки отключением питания. Насос остановился, клапан не закрылся, через него обратно вода пошла. Давление упало, ещё бы чуть-чуть и котёл бы остановили :))
А насос потом ещё минут 10 или 20 выбегал. Превратили тепловую станцию в гидравлическую :)))
О, вы ведь в курсе про Тойоту Камри и 11 000 глобальных переменных?
Будучи студентом третьего курса, мой однокурсник устроился в контору, пишущую софт для гос.корпораций. Десять лет спустя ему звякнули и спросили за критическую ошибку в библиотеке. Эта библиотека работала на русских самолетах десять лет… и работает и поныне.
> что на машинах современных тоже бывают глюки.
Так в ногах же тоже правды нет. (с) народная мудрость :-)
Облачко от ЧАЭС планету таки обогнуло…
В самолётах тоже есть где накосячить.
… и тут в тред приходит индийский разраб, писавший авионику для 737 Макс...
Это если они исполнительную часть бмрц оставили. А если там не бмрц, и они повмешивались в релейку, то может быть что угодно. Но обычно так не делают.
Да, по ссылке на реддите пишут, что пока что в Швейцарии нет поездов с 512 осями.
Представляю себе, какой сюрприз при запуске ждет разработчиков нового поезда лет через -дцать…
Нам железка раз поставила условие: в течение недели после пуска круглосуточно на посту должен дежурить наш представитель.
Зато на другом транспортном объекте сразу после подписания акта о приёме в опытную эксплуатацию появились люди с болгарками, которые перерезали нафиг трубы с кабелями идущими в старую аппаратную и начали её разбирать. На растерянно-недоумённый возглас с нашей стороны:
- Э-э… а чего так резко? Надо было пару недель поработать параллельно!
Было сказано: - Нужны помещения.
Ну а несанкционированное управление реальными объектами — это да-а...
Раз занимались ПНР автодорожной системы. Я проверял работу шлагбаума: раньше были какие-то проблемы с железом и пока их устраняли — решили добавить программную функцию увязки шлагбаума и светофора рядом с ним. Чтобы закрытие шлагбаума не стало внезапным для водителей — сначала перекрыть светофор. Реализовал.
Через какое-то время — вернулись к работе со шлагбаумом. Я так же как и раньше — смело управляю им (палка снята, ничего страшного не происходит), отдаю команду, смотрю что происходит на шине — на сигнализацию с поля внимания не обращаю. И тут диспетчер смотрит в камеры и говорит:
- А что это у нас машины стоят?
Ну ёксель-моксель! Точно! Светофор-то тоже закрыт!
В другой раз коллега на буке на объекте гонял команды — бук был отключен от сети. А потом он включает бук в сеть и… команды улетают на контроллеры.
Подстанции отключаются и начинается большой шухер.
Шит, так сказать, хэпнс.
«Бук» — самоходный зенитный ракетный комплекс, предназначенный для борьбы с маневрирующими аэродинамическими целями на малых и средних высотах (от 30 м до 14—18 км) в условиях интенсивного радиопротиводействия.
Ещё bumblebee можно вспомнить — там вытирался /usr/
Утилита на Python + bash и есть скрип, который при клоне/скачивании репозитория позволяет прописать все файлы на свои места в системе.
Прилетел баг репорт, что при установке из исходников инсталяционный скрипт требует что бы в систем был git (там скрипт создавал stage с файлами как они потом в систему будут копироваться в каталоге build/yd-tools/usr/, потом из этого stage все копировалось в систему, а потом делался git clean).
Ну я долго не думая заменяю git clean на rm -rf… Причем сам исталяционный скрипт запускался из build/ и для него путь к stage был yd-tools/usr. Ну а я случайно написал /usr.
Закоммитил фикс, закрыл багрепорт и забыл.
Прошел примерно месяц. Основная масса пользователей ставит эту утилиту через пакетные менеджеры (.deb на launchpad я собираю, а .rpm — ребята из команды поддержки росы) и в пакете там этот скрипт не используется. Там файлы по системе раскидываются пакетным менеджером.
Ну, а потом (за день до моего отъезда с семьей на море) прелетает мне письмо с матом-перематом — человек из исходников поставился и убил себе систему.
Я сморю в скрипт и не верю своим глазам… КАК же я умудрился ТАКОЙ бред написать!!!??? Срочно правлю скрипт, коммичу и пересобираю релиз. А пока я извинялся перед перцем, что меня матом крыл, мне присылают ссылку на новость на OpenNet что моя утилита сносит систему при установке…
ЗЫ Ну и само собой яндексу на opennet тоже досталось в комментах, пришлось там их адвокатом выступить и посыпать свою голову пеплом.
ЗЫЫ и как же я был рад, что этот бедняга попал в просак не тогда, когда я вдали от своего компа на море расслабляюсь…
ЗЫЫЫ отдельным шоком было что коммит с правильной правкой скрипта был под номером 666 :/
Вот этот баг, если интересно
https://bugs.mojang.com/browse/MCL-14107
Исправили в течение получаса после первого репорта, а сама проблема возникала только в случае ручного выбора каталога установки.
Плюс, судя по тому что там написано, проблема была совсем другая: анинсталлер удалял всю папку установки целиком, даже если туда же было установлено что-то ещё… Лично я вообще не считаю это за проблему, потому что при установке двух программ в одну папку конфликты неизбежны и надо быть к ним готовым.
забавно, что на эти грабли наступили Bungie в 2013, у них инсталлятор чистил всю директорию. если выбрать C:\ чистилось вместе с виндой и всеми файлами.
Яндекс диск же как-то при обновлении решил удалить папку windows.
Один из патчей EVE Online патчил boot.ini (удалял потом писал новое), только вот в некоторых случаях — перезаписывал Windows'ный c:\boot.ini. NTLDR «почему то» не понимал такого юмора и система не грузилась.
CCP Games потом сказали (перевод — forum.eve-ru.com/index.php?showtopic=11143, ссылка на оригинал — там же ) что:
— исторический код
— ну да тестировали серьезные изменения графики в этом патче и как то так вышло…
— ошибка в документации использованной тулзы для создания инсталлятора
Локер вышел качественный, с прописыванием в автозагрузку. Пришлось форматнуть телефон и начинать с нуля ))
Не будьте так строги к самому себе. У всех ваших многомудрых сеньоров есть подобные истории, а у некоторых из них – и помногу.У всех есть скелеты в шкафу, главное научиться признавать ошибки. Хорошая статья!
- Одна и та же переменная применялась как для анализа введённых чисел, так и для определения положения поворотного круга. Поэтому при быстром вводе Therac-25 мог иметь дело с неправильным положением поворотного круга (так называемое состояние гонки).
- Настройка положения отклоняющих магнитов занимает около 8 секунд. Если за это время параметры типа и мощности излучения были изменены, а курсор установлен на финальную позицию, то система не обнаруживала изменений.
- Деление на величину излучения, приводящее в некоторых случаях к ошибке деления на ноль и к соответствующему увеличению величины облучения до максимально возможной.
- Установка булевской переменной (однобайтовой) в значение «истина» производилось командой «x←x+1». Поэтому с вероятностью 1/256 при нажатии кнопки «Set» программа могла пропустить информацию о некорректном положении диска.
Кроме этих явных ошибок, было замечено множество потенциальных — например, в многозадачной операционной системе не было никакой синхронизации.
А Therac разве не на ассемблере программировали?
а в Си или плюсах, или в Васике такое не возможно?
При наличии отлаженной стандартной библиотеки — крайне маловероятна.
Как легко заметить — в описываемой ситуации отсутствует нормальная файловая система, и пользователь сам реализует некие действия, которые должны возлагаться на ФС.
В THERAC — всё случилось после отказа от «аппаратных» предохранителей-концевиков и замены их «отлаженным софтом».
Можно ещё падение Arian-5 вспомнить…
Мало того, этот "отлаженный код" использовался в предыдущей модели Therac, где как раз имелись аппаратные блокировки, надёжно страховавшие от проявлений имевшийхся багов, не давая запускать машину в неверной конфигурации.
Но как только в модели 25 отказались от аппаратных блокировок и возложили всю безопасность на "проверенный десятками тысяч часов код"...
Это был, наверное, 1984-1985 год.
Так что неудивительно, что автор писал на Форте. А на чём бы вы писали такой софт в 80х, и как другой язык помог бы избежать такой ошибки?
А в данном случае, похоже — были машинки с рудиментарной ОС, роль которой играл сам ФОРТ.
Т.е. в этом случае нужна была, прежде всего — кросс-разработка на «полноразмерных» компьютерах, а не на таких «фигулечках».
На заметку: были компьютеры, у которых Форт прописан напрямую в ROM.
PS. Я буду обновлять комментарии.
А не кажется ли вам, что это, мягко говоря, пиз… ж? «Форт» в 85? Арвид (или аналог) в 85? Дурость, конечно, присутствует… Но вот антураж… Типа Т-34 в Гражданской, запоротый хреновым бензином!)))
Нуууу… Не буду упираться. Но с датировкой, по-моему, что-то не так… Да и стримеры на видеокассетах. Уж больно экзотика. Как и Форт в качестве языка разработки. Уж больно он мудрён с обратной бесскобочной логикой.
We wound up telling everyone to always back up (to VCR tapes, btw) *every* *single* *day*.
ru.wikipedia.org/wiki/VCR
Насчет использования видеокассет для хранения производных данных — первое упоминание готовых решений, что мне удалось найти — это анонс в журнале Computerworld от 12 ноября 1984 (с.107, 112) серии микрокомпьютеров AM-1000X фирмы Alpha Micro, имеющих встроенную функцию работы с VCR.
![](https://habrastorage.org/webt/nb/wn/xk/nbwnxkvivly22_xl5tk9ld9q2kk.png)
Эта же фирма в конце 1985 анонсировала систему VideoTrax для IBM-совместимых десктопов. В 1986 эту систему уже активно рекламировали и обзирали в журналах PC Mag, InfoWorld и т.п.
Автор, кстати, вполне может промахнуться в воспоминаниях на год-два, он же пишет о датировке не очень уверенно: «Must have '84 or '85».
Видеокассеты появились еще раньше. Стандарт VHS с 1977 начал своё победное шествие, потеснив Betamax (1975). Но еще до них был U-matic (1971) от Сони, для которого они свои PCM-адаптеры и делали поначалу, кстати.
Слишком много допущениц! Оккам не одобряет!
Ну и про «мультиплатформенность» в 80-х весело.
Ну-ну, в 84-м. А отладка на чём? Вспомните старину Билли — железа для Бэйсика у него не было. А тут — полный пакет да ещё под разные ОС и железо. У прогера с 5-ти летним стажем.
Оккам таки рулит.
А у Форта изначально полноэкранный редактор был, и Форт вполне на 8 битных машинках крутился. Точнее был как рыба в воде.
И тогда было гораздо проще, небыло кучи шелухи и кучи легаси. Оно все в будущем было. А пять лет… Это период от выхода на рынок Apple II до появления IBM PC.
Это период от выхода на рынок Apple II до появления IBM PC.В данном случае даны точные даты. 1984й-1985й. Если стаж работы 5 лет — то это точно не IBM PC (IBM 5150 — это 1981й год, не забываем). Скорее всего CP/M. Причём этих самых CP/M — было как грязи. Вот тут можно почитать подробно, как в Novell с ними боролись (и да, там тоже рассказывается про кучу несовместымых систем, с которыми приходилось бороться… собственно если вы вспомните про десятки версий MS-DOS, несовместымых с IBM PC, то это, как бы, нифига не должно удивлять).
То ест да — 1984й/1985й это конец «разброда и шатания» с кучей 8-битных систем и постепенный переход на IBM PC… который вот нифига тогда не выглядел будущим победителем: «снизу» от него была куча 8-битных систем, «сверху» — Mac и Amiga с Atari XT (они как раз только появились и были явно куда как более привлекательны).
Тоже же были и попытки сделать что-то «крутое» на основе Z80 (Ямаха КУВТ на Хабре до сих пор помнят, хотя вроде системы на MSX до России так и не добрались).
Кстати вот эти самые машинки на MSX вполне себе поддерживали старый 8-битный софт и там даже Turbo Pascal был!
Так что вполне можно поверить, что не все прям перешли сразу на PC в начала 1980х… Amstrad PCW только появился в 1985м, а продавался аж 1998го!
Большим плюсом MSXDOS была совместимость по носителям с IBM PC, а по системным вызовам с CP/M.
Как MSX до СССР не добрались?MSX2+ имелась в виду. Вначале думал, что и MSX2 тоже не добрались, только MSX1, но, похоже, на MSX2 всё-таки как раз КУВТы выпускались. А вот на MSX 2+ (и MSX TurboR) — уже нет.
«After 1986, Microsoft stopped supporting the MSX standard and ASCII in Japan took over further development of the standard. The first MSX2+ computers, the Panasonic FS-A1WX, Panasonic FS-A1FX and Sony HB-F1XDJ were released in Japan on October 21 1988. The Sanyo PHC-70FD came out a little later on November 4 1988. Due to ASCII's diminished lack of interest in the European market, no MSX2+ system was manufactured or sold outside Japan. Rumours and plans existed in the Netherlands to make a European MSX2+, but they never came to reality.
The MSX Turbo R is the last generation of MSX computers that was put to market by a household electronic brand. Only Panasonic was brave enough to put faith in the standard once again, by releasing two different models: the Panasonic FS-A1ST and the Panasonic FS-A1GT. MSX Turbo R computers were produced until 1994.
According to Kay Nishi, the R on the MSX Turbo R stands for RISC (Reduced instruction set computing).
MSX Turbo R computers were only produced by Panasonic and Takaoka in Japan.»
Так что отсутствие MSX2+ и Turbo R в СССР вполне логично.
И тогда было гораздо проще, небыло кучи шелухи и кучи легаси.
Huh.
Чиста по-Америке: Tandy, Atari, Apple, Amiga.
У каждой — своя линейка компьютеров, не всегда совместимая внутри линейки.
Плюс в Британии гражданин Синклер, у которого было до Спектрума — и не факт, что он один.
Что было во Франции, Германия — а фиг его знает.
- A computer terminal using the ASCII character set
- An Intel 8080 (and later the 8085) or Zilog Z80 microprocessor. The NEC V20 and V30 processors support an 8080-emulation mode that can run 8-bit CP/M on a PC DOS/MS-DOS computer so equipped, though any PC can also run the 16-bit CP/M-86.[12][13]
- At least 16 kilobytes of RAM, beginning at address 0
- A means to bootstrap the first sector of the diskette
- At least one floppy disk drive
Ну и Форт, в отличии от Бейсика, мог расширять набор используемы слов (функций) без использования костылей, средствами самого языка ;)
А я и не утверждаю, что Форт- хуже Бейсика. Просто он — весьма необычен даже с современной точки зрения.
Просто он — весьма необычен даже с современной точки зрения.Вот как раз именно и исключительно с современной точки зрения — он и является чем-то необычным.
А для человека, который в ВУЗе орудовал HP-35 в Форт не было ровно ничего необычного. Как и для его коллеги «через лужу» перешедшим с логапифмической линейки на Б3-21, а потом спаявшего себе микрокомпьютер…
В этом всё дело: из сегодняшнего дня Форт кажется чем-то необычным и странным. Но в начале 80х в нём ничего странного не было: такой себе калькулятор-переросток, чего ж тут непонятного?
По иронии судьбы 8-битные персоналки сделали Форт популярным, а 16-битные — его убили. Потому что переход с какого-нибудь HP 48GX (который был популярен настолько, что даже в начале XXI века куча инженеров-геодезистов с ним ездила вместо лаптопов) на 8-битный форт — это легко и просто.
А вот уже переход с MathLab… нифига, там RPN нету, там другая жизнь…
Микрокомпьютеры в наших краях — имели, обычно — какой-нибудь монитор в качестве «основной оболочки».
Форт оригинален тем, что он не поймёшь какой — не то интерпретируемый, не то компилируемый.
Технология его трансляции в некоторых вариантах шитого кода позволяем получить программу как последовательность вызовов процедур — что должно минимизировать накладные расходы, и, по-моему — сейчас не используется нигде в интерпретируемых языках (хотя я могу и ошибаться).
Другие варианты — наоборот, позволяют получить машинно-независимую программу — при довольно небольшом росте накладных расходов.
Когда я читал книжку по Форту — у меня создалось твёрдое убеждение, что он — 16-разрядный.
Убил его, скорее — рост типичного объёма памяти персональных компьютеров — таки управление памятью более 64 килобайт в него впихнуть как-то непросто, пмсм.
Ну и широкое распространение жёстких дисков.
У Б3-21 и им подобным — это весьма специфический «ассемблер».Я бы, всё-таки, сказал, что это веьма специфический Форт. Передача информации через стек и RPN — это основное, что вводит в ступор новичков в Форт, а для человека, который лет пять работал с HP-35, оно всё уже такое родное и знакомое, что переход на Форт ощущается как апгрейд, а не как «что-то странное»…
Были программируемые микрокалькуляторы с Бейсиком.В 70е — не было и быть не могло. Это уже 80е. Casio FX-700P — 82й год, МК-85 — вообще 85й.
Технология его трансляции в некоторых вариантах шитого кода позволяем получить программу как последовательность вызовов процедур — что должно минимизировать накладные расходы, и, по-моему — сейчас не используется нигде в интерпретируемых языках (хотя я могу и ошибаться).Она даже в современных форт-системах не используется почти никогда. Ибо проигрыш по скорости со сравлению с нормальной компиляцией — примерно на порядок… а требований вместить компилятор в пару килобайт кода сейчас нет. Разве что у GForth ещё осталось…
Когда я читал книжку по Форту — у меня создалось твёрдое убеждение, что он — 16-разрядный.Ну… плюс-минус. Главное — что все ранние реализации закладывались на 16-битные адреса, а когда память подешевла — это стало большой проблемой.
Убил его, скорее — рост типичного объёма памяти персональных компьютеров — таки управление памятью более 64 килобайт в него впихнуть как-то непросто, пмсм.Вот ни разу не проблема. Качните GForth да поиграйтесь. Он и с память в терабайты легко может справиться.
Просто когда памяти стало больше — уже не нужно было так себя ограничивать. И да, появились и калькуляторы с бейсиком и C++ на телефоне…
Я бы, всё-таки, сказал, что это веьма специфический Форт.
Эт'вряд-ли.
Формат команды микрокалькулятора — характерно-ассемблерный, [адрес] [код команды] [операнды], и архитектура — Гарвардская.
А в Форте — подразумевается Неймановская архитектура и слова произвольного текстового вида.
Помню, как в каком-то журнале, не то в НиЖ, не то ТМ — в соотв. рубрике программируемые МК описали как «маленьких динозавров» — дескать, «раздельная память программ и данных для современных ЭВМ не характерно, только для совсем уже древних».
Это где-то район 1980 года.
Передача информации через стек и RPN
Передача информации через стек- по сути, широчайше используется в Си и плюсах, ну и подобном — только в слегка замаскированном виде.
«Польская обратная бесскобочная запись» — нужна для упрощения разбора выражений.
В 70е — не было и быть не могло.
Ну, я же не говорил, когда они были.
Она даже в современных форт-системах не используется почти никогда. Ибо проигрыш по скорости со сравлению с нормальной компиляцией — примерно на порядок… а требований вместить компилятор в пару килобайт кода сейчас нет. Разве что у GForth ещё осталось…
Непонятно, почему «даже в современных».
Но, в принципе — если в Форте не используется его
специфическая трансляция — то как-бы и смысла особого в Форте нету.
Вот ни разу не проблема. Качните GForth да поиграйтесь. Он и с память в терабайты легко может справиться.
Ну, допилить то-можно всё, разумеется.
Просто когда памяти стало больше — уже не нужно было так себя ограничивать.
Именно это я и имел в виду, в первую очередь.
Если есть машина с достаточным количеством памяти и винчестером — то лучше на Си.
Оно к человеческому языку ближе.
Формат команды микрокалькулятора — характерно-ассемблерный, [адрес] [код команды] [операнды], и архитектура — Гарвардская.Господя! Ну какая разница? Вы сейчас примерно сравниваете трактор и Теслу и объясняете, что Тесла — нифига не похожа на BMW 3й серии, трактор к BMW гораздо ближе: у трактора-то и у BMW — ДВС, а у Теслы-то электромотор!
А в Форте — подразумевается Неймановская архитектура и слова произвольного текстового вида.
Вся эта разница между Неймановской архитектурой и Гарвардской начинает играть, когда вы начинаете лезть в словарь, делять слова, которые компилируют слова и прочее. Там — да, там это становится важно. Ну так до этого ещё дойти нужно!
А разница между «обычными языками» и Фортом — вот она, на поверхности: двухстековая архитектура вместо одного стека, RPN вместо инфиксной записи и всё такое прочее. То есть, грубо говоря, то, что в 1980е отличало в СССР инжинерный калькулятор от программируемого…
Передача информации через стек- по сути, широчайше используется в Си и плюсах, ну и подобном — только в слегка замаскированном виде.В настолько замаскированном, что можно кучу программ написать до того, как понять, что C/C++ чем-то отличается от Fortran IV (где при вызове процедуры адрес возврата просто писался напрямую в команду
JMP
, которой эта самая процедура заканчивалась: просто, элегантно — и никакого стека).В MIX, кстати, именно так вызов процедур устроен.
«Польская обратная бесскобочная запись» — нужна для упрощения разбора выражений.Она нужна, чтобы не плодить сущнестей. Если у вас процедура забирает данные из стека и кладёт туда же, то
+
ничем не отличается от фукнции вычисления корней квадратного уровнения. Не нужен ни особый синтаксис, ни всё, что с этим связано.Ну, я же не говорил, когда они были.Что, как бы, несколько странно в контексте дискуссии, сконцентрированной на разнице восприятия Форта в начале 80х (чувак, по описанию, к 1985му уже пять лет программитом работал) от сегодняшнего дня (да и, собственно, даже вчерашеного: уже с середины 90х основным индустриальным языком стали C и C++).
Непонятно, почему «даже в современных».Понятно как раз. В 80е существовашие тогда компиляторы Pascal и C выдавали код, качество которого было где-то в районе «отвратительно» до «полный швах». И примитивный шитый код Форта (за счёт более эффективной передачи данных) мог его нагнать.
Когда появились оптимизирующие компиляторы… это перестало работать — разницу в 10 раз так просто не отыграть…
Оно к человеческому языку ближе.Я бы не сказал. Там тоже чудес хватает. Но оно явно ближе к математической записи, а двухстековые RPN-калькуляторы вышли из моды, так что… да, в сегодняшнем мире Форт не очень востребован.
Не совсем понятно упоминание про старину Билли, ибо в 1985 году железо для Бейсика клепалось сотнями тысяч единиц. IBM PC XT, например, это 1983 год с MS-DOS 2.0 и Бейсиком в BIOS.
Хоровиц/Хилл — гарантируют это!
Tandy TRS-80, Atari, Apple, чуть позже — Amiga — с широким веером своих моделей, не всегда и ни во всём совместимых…
Про 80е найти не удалось информации.
books.google.ru/books?id=pDGnxFyejN4C&pg=PA56&dq=vcr+backup+computer&hl=ru&sa=X&ved=0ahUKEwjs4Mz6gOTpAhUzIMUKHVhKCAgQ6AEITDAE#v=onepage&q=vcr%20backup%20computer&f=false
(PC Mag за 10 июня 1986г. стр.56)
Вполне возможно что это, либо аналоги существовало и в 1984м.
Тем более, что хранение данных на аудиокассетах в восьмибитном мире было общим местом, а идея использовать под это и видеокассеты была очевидной и наверняка приходила на ум многим независимо и неоднократно.
Уж больно он мудрён с обратной бесскобочной логикой.Это из XXI века он «больно мудрён». А если вы вернётесь в начало 80х… когда, внезапно, Microsoft Pascal или Apple Pascal не влазили на одну дискету и вам нужно было для компиляции программы (и, как бы, обнаружения ошибок) эти дискеты менять… и не такое можно освоить.
Благословенный Turbo Pascal, решивший эти проблемы, в 1983м появился, не забывайте… и далеко не все и сразу на него перешли…
Да и стримеры на видеокассетах. Уж больно экзотикаЗначит вы не застали отечественный АРВИД :)))) А уменя была своя библиотека игр для ПК на видеокассетах :))))
А обсуждается переводная статья про события в Америке середины 80-х, когда такие устройства действительно только-только начинались.
В 90-х то они везде появились — и у нас, и в Европе, не говоря уже о Штатах с Японией.
Forth появился в 1970 году. Был прошитым языком на БК-0010, если мне склероз не изменяет (знатоки поправят) — аккурат 1985 год. Арвид появился в начале 90-х, и то лишь потому, что "видаки", равно как и бытовые компы в СССР именно в те годы переставали быть недоступной экзотикой, раньше 90-х никакой Арвид людям и не был нужен.
А так как в те годы пересечение госграницы СССР для этих технологий как раз и занимало лет пять, я склонен верить автору.
«Из-за схожести синтаксиса Фокал часто сравнивался с Бейсиком. В целом, язык уступает Бейсику по своим выразительным возможностям, например, в Фокале совершенно отсутствует строковый тип данных, все переменные на Фокале — числовые (как правило, дробные числа с плавающей запятой). Вместе с тем, интерпретатор Фокала гораздо менее требователен к ресурсам (прежде всего к памяти), нежели Бейсик, что позволяет делать более сложные программы в системах с ограниченными ресурсами.»
В Wikipedia всё подробно описано. И какие версии были и что в школы поставляли и даты даже.
«Школный» БК как раз был с Фокалом, но, возможно, в вашу школу попала более дорогая версия. А может это вообще были 1990е и БК-0011…
А возможно бейсик просто раздавали с ДВК («школная» версия БК поддерживала сеть и можно было грузить бейсик централизованно на все компьютеры).
На ДВК-2 была в конце восьмидесятых игрушка с некоторым подобием НЛП, которая генерировала более-менее связные тексты на заданную тему. Оригинал был написан для английского, и адаптирован не полностью. Поэтому когда ей не хватало словарного запаса, она вставляла подходящие термины на оригинальном языке.
Вот прямо флешбэк сейчас случился.
P. S. в том же пакете был и переводчик, прославившийся легендарным переводом ассемблерного кода (ну не Байрона же тупой железяке кормить) mov ax, dx
→ «двинуть топором начальника штаба».
У меня самый трудно-отлавливаемый баг был связан с системой обновления ПО. На предприятии были трудности с выделением нормального хранилища для обновлений, зато был сервер с SQL СУБД. Потому было решено хранить файлы обновлений в отдельной БД в виде блобов. И обновления успешно скачивались в головном офисе, а вот у филиалов постоянно выползали ошибки и обновления не скачивались. Я добавил логов в под программу обновления, но не смог её полноценно распространить, потому что… Ну, обновления не скачивались. Потому для всех филиалов мы просто переустановили продукт до свежей версии и забыли о проблеме. Пока через полгода она не всплыла вновь… Но теперь то у нас были логи! Оказалось все довольно банально, в филиалах был медленный дешёвый интернет, а на запрос select был установлен таймаут в 30 секунд, потому когда приходил "тяжёлый" апдейт, он просто не успевал скачаться. Пришлось снова переустанавливать ПО во всех филиалах, но это была уже совсем другая история. Выводы простые… Пользуйтесь проверенными способами деплоймента и логгируйте все что можно.
Вот здесь можно ознакомиться с историей коллективного поиска причины нечитаемости DVD дисков. Тема очень длинная, но читается как детективный роман.
Необъяснимая загадка: читаемость диска зависит от содержимого файла
Для большинства, кто желает кратко ознакомиться:
У человека не читался 80-мегабайтный мультфильм с DVD диска. Причем, несколько раз на новых качественных дисках. А другая информация вполне записывалась и читалась. Автора темы вначале высмеивали за то, что мог даже предположить, что может существует какая «волшебная» информация, которая может не читаться. Однако, он продолжал упорно искать причину, разделил файл на части и попробовал записать и считать каждую по отдельности. В итоге вышел на конкретную последовательность байт, и через какое-то время выяснил, что эта последовательность байт при скремблировании (преобразовании информации перед записью на диск) образует 12-байтную последовательность #ff #ff #ff… И именно эта последовательность применяется в данной модели привода в качестве метки начала сектора.
Он даже вычислил вероятность данного события, получилось что-то в районе 10^-28.
Он даже вычислил вероятность данного события, получилось что-то в районе 10^-28
Для последовательности
#ff #ff #ff… — она много больше. Хуже только последовательность из 12 нулей.
Была бы какая-нибудь #a1 #20 #f0… того да, 10^-28.
Там ещё пришли к выводу что кто-то нарочно навтыкал этих сигнатур в файлы, рассылаемые по сети. Интересно, с флешками и ssd есть сейчас какая-нибудь подобная шляпа или нет. Вот вам и носители данных.
Много нулей или единиц ничего не поломают, потому что там модуляция 8 → 14, как раз для защиты от таких приколов. И заголовки сектора нужны не из-за кривых чипов, а из-за ограниченной точности механического позиционирования. На жестких дисках, знаете ли, тоже заголовки секторов есть, хотя там чип вместе с диском идёт и проблем с совместимостью нету.
Для последовательности
#ff #ff #ff… — она много больше.
это неверно, так как это не байты в данных, которые пишутся, а результат скремблирования (шифрования)
У меня под капотом что-то засвистело не по-детски. Но как-то смутно, нестабильно. То свистит. То не свистит.
Пару дней проводил следственные мероприятия и полевые испытания «свиста», и таки нашёл! Под капотом свистит только тогда, когда еду с запада на восток.
Понёс механику баг-репорт: когда я еду на работу — с востока на запад — то под капотом не свистит. А когда я еду домой — с запада на восток — то почти постоянно что-то где-то под капотом свистит. Карта обоих маршрутов прилагается. Аудиозапись свиста у меня в телефоне. Давайте чинить.
Механик послушал аудиозапись свиста и подтвердил: таки да, свистит только при езде с запада на восток. Но свистело не из-за направления, а потому, что поизносился ремень генератора электрического тока, он уже проскальзывал по направляющим ложбинкам. И каждый раз, когда я включал фары, медленно повышалась нагрузка на генератор, он начинал крутиться быстрее, и если ремень неплотно прилегает, то вот и «засвистело под капотом».
А фары я включал только по вечерам, когда возвращался домой — с запада на восток.
Было неудобно.
«Я понимаю, что могу показаться идиотом, но все, что я хочу рассказать, — святая правда. В нашей семье все очень любят мороженое. Каждый вечер после ужина мы решаем, какой сорт будем есть на десерт, и я еду за ним в магазин. Проблемы начались после того, как я приобрел новый «понтиак». Каждый раз, когда я покупаю ванильное мороженое и собираюсь вернуться с ним домой, машина напрочь отказывается заводиться! Если мороженое клубничное, шоколадное или любого другого сорта — никаких проблем. Звучит глупо, но, может быть, в «понтиаке» есть нечто, что реагирует на ванильное мороженое?»
Разумеется, в службе поддержки клиентов к письму отнеслись скептически, и все же — «клиент всегда прав!» — послали инженера на проверку…
Владелец автомобиля оказался вежливым, образованным человеком, и на сумасшедшего похож не был… Поехали в магазин, купили ванильное мороженое. Все точно — машина не заводится! Так продолжалось несколько дней подряд. Шоколадное — заводится. Клубничное — заводится. Ванильное — нет.
Инженер был человеком здравомыслящим и отказался верить в то, что у автомобиля может быть аллергия. Он отмечал все детали поездки — время, каким бензином и на какой колонке заправляли машину, даже температуру и облачность…
В конце концов выяснилось, что дело не в самой ванили, а в расположении товаров в торговом зале магазина. Ванильное мороженое — как самое ходовое — размещалось в холодильнике самообслуживания у самого входа, а все остальные сорта — в глубине зала, и продавались через кассира. Купить ванильное можно было намного быстрее, чем любое другое…
Задача перешла в разряд технических — почему машина не заводится, если хозяин возвращается к ней быстро? И ответ был найден: двигатель не успевал остыть, и в карбюраторе оставались пробки, вызванные интенсивным испарением бензина. Что, в свою очередь, повлекло необходимость совершенствования карбюратора, но это — уже совсем другая история…
При преобразовании в UPPERCASE таким свойством обладает i → İ, при преобразовании в lowercase таким свойством обладает I → ı; в обоих случаях символ из базового набора ASCII (1 байт) превращается в символ из расширенного набора (2 байта).
echo -n i | hexdump -C
00000000 69 |i|
00000001
echo -n i | tr [:lower:] [:upper:]| hexdump -C
00000000 49 |I|
00000001
Вы про эти символы?
Да, символы эти (два из четырёх), но вы забыли про турецкую локаль, без неё фокус не получается.
tr
нужен правильный, из Heirloom Toolchest.А если у вас GNU/Linux, тогда только так вот:
echo -n i | LC_CTYPE=tr_TR.utf8 awk '{ print toupper($0) }' | hexdump
0000000 b0c4 000a
0000003
У меня под капотом что-то засвистело не по-детски. Но как-то смутно, нестабильно. То свистит. То не свистит.На этом месте я подумал, что вам пора бы поменять ремень навесного оборудования. Так что вряд ли вы кого-то там напрягли.
> поизносился ремень генератора электрического
> тока, он уже проскальзывал по направляющим
> ложбинкам. И каждый раз, когда я включал фары
Я думал, что дальше детективная история, грозящая перерасти в околонаучную полуфантастическую, пойдёт по теме разворота магнитосферы Земли относительно автомобиля...! А тут такой облом… фары включал… эх...! :-)
А потом программисты переписали библиотеку и теперь массив мог приходить с нулевым адресом… Разумеется, мне об этом не сказали.
В общем, несколько БИОСов оказались перепрошиты.
Я выпустил текстовый процессор, форматировавший жёсткий диск после каждого 1024-го сохранения