Мой путь с 1990 года с 286 ПК и VIM до 2021 года с ПК Zen 3 и VIM. Где все пошло не так?

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

Когда я впервые поступил в университет, примерно в 1990 году, у меня был ПК 286 с DOS, он был скудным и скудным с 2 МБ памяти, графикой VGA, процессором 20 МГц и жестким диском на 20 МБ (на этом я использовал «удвоитель диска». называется Stacker, что сделало его в 10 раз медленнее, но вдвое увеличило объем памяти - общий «беспроигрышный», не так ли?). Он курил… ну, не совсем, но в конце концов он буквально закурил.

Одна из вещей, которые у него были, - это графический пользовательский интерфейс, графический интерфейс. Я мог запускать Windows 3.1, и в основном всем на экране можно было управлять с помощью мыши. На моем 14-дюймовом 256-цветном мониторе были красивые окна и диалоговые окна с графическими иконками. «Ого, супер просто, просто наведите, давай… ..ди сюда, о, занятый курсор, подожди, подожди, пока таймер яйца …… затем щелкни, щелкни, щелкнул? Попробуйте еще раз, нажмите, и да! Это спасло, теперь я в безопасности от преходящего, изменчивого, я упорствовал ».

Если я не решился и не запустил Windows, то у меня был Word Perfect, который запускался прямо из DOS 5. Word Perfect был текстовым процессором, предшественником Open Office Writer или тому подобного. Это был редактор для тех из нас, кто был достаточно обманут, чтобы думать, что кто-то может захотеть, чтобы то, что мы написали, было напечатано на бумаге и прочитано за завтраком с кофе и дорогой небольшой выпечкой. Большинство моих игр также запускались как из DOS, боги кто-нибудь? У Word Perfect был внешний интерфейс, но это не был графический интерфейс. Под Front End я подразумеваю, что у него была строка меню с кнопками и окнами, которые всплывали для сохранения и загрузки, но то, что вы видели на экране, не было WYSIWYG, это не было похоже на то, что вы получили бы, когда распечатали его на бумаге. В нем также была функция макросов, которую было легко освоить, если вы могли создать кубик Рубика менее чем за минуту. К сожалению, я вообще не мог делать кубик Рубика, да и сейчас не могу, хотя я купил книгу, которая должна была научить меня, менее чем за неделю - я, наконец, назвал ее провальной через 6 месяцев. С помощью макросов вы могли набирать комбинацию клавиш и делать удивительно сложные вещи, даже не думая об этом белом монстре краешком испуганного глаза.

Как и большинство людей, я ленив и слегка заблуждаюсь по поводу того, насколько я умен. В конце концов, все свое время я провел в Windows, нажимая на легко читаемые слова или общие значки (которые намного дешевле использовать в ваших приложениях, поскольку вам не нужен дорогой переводчик, полиглоты и т. Д.). Я был наркоманом. В те дни Windows ломалась довольно часто, и довольно часто, и если бы у вас был жесткий диск, вы бы потратили много времени на его форматирование и повторные попытки. Забудьте про BSOD. Смерть ? Тебе повезет, если он вообще родился. Поскольку большинство игр было в DOS, вам также необходимо было настроить ПК с параметрами расширенной и расширенной памяти, которые нарушили бы запуск Windows, поэтому пришлось много возиться с autoexec.bat и config.sys. Взгляните на те имена файлов с максимум 8 символами, они были достаточно хороши в мое время!

Я чувствовал, что мир движется вперед, GUI движется, и я ехал на сверхскоростном поезде в будущее. Вскоре игры перемещались только с клавиатуры, чтобы указать и щелкнуть, плюнуть на Остров обезьян, плюнуть керчингом! Я был теперь на 100% в зоне Windows.

В этом же году я поступил в университет. Все началось хорошо. У Turbo Pascal была IDE, как и у Borland C / C ++. Теперь все это делает IDE или интегрированная среда разработки. Это Илон Маск из мира разработчиков, хотя и немного более надежный и красивый. В нем есть редактор, набор инструментов, терминал, отладчик и бесчисленное количество открытых окон, которыми вы можете перегружать свои чувства, как щенок в рекламе диетической колы.

После того, как я добрался до последнего года обучения в 1993 году, мне нужно было выбрать последний проект, что-то передовое, мой шанс заявить свое имя на Премии мира. Я выбрал тему «Оптическое распознавание символов» (передовая в то время - я знаю, забавно, а?). OCR берет отсканированные изображения печатного текста и буквально конвертирует их в текстовые файлы. Теперь они были доступны для поиска, индексирования и занимали относительно небольшой объем памяти. Руководил моим последним проектом декан факультета, большая собака. Когда он сидел рядом со мной, никто не собирался слишком сильно жарить меня в моем Viva Voce. Здесь вы должны представить свой проект устно, и группа лекторов оторвет вашу смехотворную попытку войти в их мир, мир Специального Эксперта-Исследователя, мифического Компьютерного Ученого. Почему сейчас идет один, посмотрите, бежит через туманные горы, редкий, бородатый, я думаю, вот он, пытается найти давно утерянный Святой Грааль, работающий алгоритм ИИ.

Как бы то ни было, в тот день, когда я вошел, чтобы узнать, что такое OCR на Земле, и «как это сделать», то есть решить проблему за 8 недель, которые у меня были, он передал мне данные для входа в «Лабораторию». «Святая корова!» - выдохнула секретная «Лаборатория». На том же куске выцветшей желтой бумаги для принтера с пересекающимися параллельными зелеными линиями, прямо под моим новым именем пользователя mob1 и паролем! * & ^^ a, были эти две маленькие буквы… .VI. В настоящее время VI заменен VIM, не-а, улучшен! Естественный прогресс с столь же очевидным улучшением названия. В нашей лаборатории было бесчисленное множество довольно глупых терминалов, все они были подключены к какой-то сумасшедшей штуке типа мэйнфреймов, работающей под управлением Unix. «У этого, должно быть, есть довольно хорошие современные технологии», - сказал я себе, поднимая неконфигурируемый, ломающийся, неэргономичный стул. «Хорошо, давайте войдем и сделаем оптическое распознавание текста».

Теперь, как вы уже догадались, логин, пароль, подождите. «Держись», это очень медленно. «Хех лаборант, а где Windows?», «Хахахаха, это неплохо. Почему бы тебе не ввести его и не запустить ». Ой, как я мог быть, конечно, тупым ...

>выиграть

команда не найдена

«Нет, погоди, что написано на этом листе бумаги, который он мне дал?» - вот оно, выцветшими синими чернилами - «Путеводитель идиота по VI». Это заняло у меня несколько минут, но меня поразило, как товарный поезд, это был огромный шаг назад. Пришлось использовать клавиатуру!

«Лидер? Сначала уйти, прежде чем печатать? Что, черт возьми, никакого WYSIWYG, ничего себе, что происходит? »,« Зачем кому-то в 1993 году понадобилась эта жалкая попытка редактора? Где все цвета? Где занят курсор? », Наверняка произошла какая-то ошибка.

К концу двух месяцев плача поздно ночью в углу секретной «лаборатории» у меня наконец было 3 файла C ++, один назывался main.c, а два других - OCR.cpp и OCR.h . Оба они были очень большими. «Инкапсулируйте мир!», - сказали они, и я сделал это. "Потрясающий".

Но если отбросить сарказм, это действительно было круто. Быть вынужденным изучать основы VI на всякий случай, а также научиться использовать инструментальную цепочку командной строки, казалось довольно большим достижением. Я вскочил, ударил по воздуху с помощью Gusto, и вскоре мой проект OCR был брошен в пылающую бездну вчерашнего дня, в библиотечный раздел диссертаций.

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

Первая работа - GEC Plessey Telecoms (в пузыре телекоммуникаций), 7 лет написания системы управления мультиплексором, используемой для управления телекоммуникационной инфраструктурой всей страны. У каждого вычислительного узла было несколько процессоров, работающих в HP UNIX. А редактор? Вы угадали VI. Да, в HP-UX есть X Windows (набор инструментов для мотивов), но в цепочке инструментов не было IDE, а графический редактор не поддерживал отступы.

После этой первой работы я работал над написанием программного обеспечения во многих отраслях, включая видеоигры, где я программировал игровые движки, игровой код, серверные веб-службы - все на C ++ и C # в Windows, а значит, все с использованием мощной среды разработки Visual Studio. Так что, к сожалению, нет VIM.

После этого я перешел к написанию приложений и игр Java на Android, используя AndroidIDE, опять же без VIM.

Я также написал множество скриптов и системных тестов с использованием Python и часто обнаруживал, что использую PyCharm или PyDev с Eclipse. Одна вещь, которую я всегда замечал, пробираясь по закоулкам настроек или опций, большинство приложений имели переключение на клавиши VIM или режим VIM для своих редакторов, и это включает в себя все IDE из AndroidIDE, PyCharm, VS Code и т. Д.

Однако в последнее время я зарабатывал себе на жизнь написанием встроенных прошивок. Теперь большинство встраиваемых устройств не работают с процессорами на базе x86. Это слишком тяжело для газа. Цена и мощность диктуют более дешевые и менее энергоемкие ядра ЦП. Эти процессоры производятся такими компаниями, как ARM (Cortex), Cadence (Xtensa) и многими другими (скоро у нас будет доминировать RISC V). С большинством этих процессоров вы разрабатываете для Windows или Linux и выполняете кросс-компиляцию с их наборами инструментов. Эти наборы инструментов основаны на GCC, а теперь и на CLANG, и в большинстве случаев не имеют связанной IDE. Однако вы могли бы, если бы вы могли обработать небольшую конфигурацию IDE, настроить любую цепочку инструментов с общей IDE, такой как Eclipse. Но довольно часто это сложно, и для таких вещей, как отладка, бывает несложно. Аппаратные точки останова, средства просмотра содержимого памяти, даже просмотр содержимого переменных в окне просмотра - вам повезло, если все работает должным образом. Итак, без IDE и из-за давления со стороны сверстников вы снова проиграете и сломаетесь, вернувшись в командную строку.

Теперь я очень рад, что потратил несколько лет становления на изучение такого редактора, как VIM, так как его можно использовать практически где угодно и с любой цепочкой инструментов. Да, он запускается из командной строки, но в Windows теперь есть Всемогущий терминал Windows (см. Здесь, как использовать одно окно для всех сред Python, MSYS, Ubuntu bash для подсистемы Windows Linux, Git Bash, Powershell, Cmd, SSH, список можно продолжить!) ». Излишняя зависимость от огромной лицензированной среды IDE может быть большой ошибкой. Это Rolls-Royce в мире инструментов программирования. Но иногда клиент, которого мы водим с водителем, не хочет тратить деньги на такой большой блестящий красивый автомобиль, он хочет, чтобы мы знали, как водить мини-метро. Может, это и не так быстро, но припарковаться будет проще, если ты умеешь, верно?

Но есть еще одна вещь, о которой стоит упомянуть, - удаленное подключение к машине. В последнее время в одной крупной международной компании я часто подключаюсь к разным тестовым клиентам SSD. При написании прошивки SSD мы использовали ПК для разработчиков под Windows и тестовые хост-ПК под управлением Linux и Windows. К ним был подключен один из наших твердотельных накопителей NVMe PCIe 4 для отладки в случае сбоя теста. В начале моей работы в компании мы использовали VNC или удаленный рабочий стол для подключения. Супер просто, и я мог запускать блокнот ++ или IDE, или что угодно, потому что у меня была ОС, которая могла отображать графический интерфейс, удаленно подключенный к моему рабочему столу разработки. Но, поскольку эти хосты были зарегистрированы в анонимной учетной записи, каждый мог получить к ним доступ, и поэтому внезапно это было сочтено угрозой безопасности. Затем мы были вынуждены использовать SSH для подключения к этим хостам, и, хх, больше нет ОС с графическим интерфейсом! Невозможно открыть блокнот ++ и т. Д. Изменить код, собрать его локально и т. Д. Итак, вернемся к редактированию локальных файлов на хосте с помощью, как вы уже догадались, VIM!

Вы видите, что VIM работает в том же окне, которое вы уже используете, внутри терминала. Не нужно открывать другое окно или использовать какие-либо виджеты отображения, вам не нужна система Xwindows, работающая на хосте, или удаленное визуальное представление ОС. Одна из замечательных связанных с этим функций - возможность использовать vim поверх ssh. Вот единственная командная строка, которая позволяет вам подключаться к компьютеру по ssh, редактировать локальный файл, прежде чем он будет скопирован обратно на удаленный компьютер через rsync.

пользователь @ хост: vim rsync: // сервер: / etc / hosts

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

Я даже не коснулся функций и функций, поскольку другие подходят для этого лучше меня. Да, я могу использовать файл .vimrc, и я помню около 50 сочетаний клавиш, но это все для меня: «Я не король VIM», мистер Робот. Вы часто можете увидеть, как я делаю заметки из статей «8 вещей, которые каждый должен знать о VIM с первого дня». Я ежедневно использую VIM на своем новом блестящем ПК, и это не 286 (к сожалению), это AMD Zen 3 5950 с жидкостным охлаждением, 64 ГБ DDR, 8 ТБ твердотельных накопителей NVMe PCIe 4 и 3090 RTX, и что мне использовать редактировать мой код? ВИМ. Либо через плагин VIM Visual Studio Code, либо прямо из самой командной строки, в WSL2, git bash или даже в оболочке cmd.

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