РадиоЛоцман - Все об электронике

Верните BASIC

Lou Frenzel

Electronic Design

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

Верните BASIC

Так или иначе, в течение последних нескольких лет я имел дело с множеством микроконтроллеров, практически все из которых используют C или какие-либо его разновидности. Мне удалось выучить C и написать несколько простых программ, но я ненавижу его. Я все время вспоминаю, как много писал на BASIC. Он делал то, что я хотел, и был относительно прост в использовании.

Конечно, BASIC – не лучший язык. По сути, это интерпретируемый язык, который часто недостаточно быстр для некоторых приложений. Но компилируемая версия BASIC обычно решает эту проблему. Язык работает и делает то, что должен делать.

Я выучил BASIC еще на заре персональных компьютеров – это почти все, что тогда у нас было. Многие из нас рано освоили BASIC, потому что он был в чем-то похож на FORTRAN, который многие из нас изучали в колледже на больших ЭВМ. Мы писали короткие программы и длинные программы, и бизнес персональных компьютеров реально взлетел. Я думаю, что с BASIC это случилось бы быстрее, поскольку он был прост в освоении и использовании, и потому многие приняли его. Об этом были написаны десятки, а может быть, и сотни книг.

На смену BASIC пришли другие языки. Помните Pascal? Он пришел, а через несколько лет ушел. Затем от разработчиков UNIX пришел C, и всех, казалось, потянуло к нему. Таким образом, C стал де-факто языком программирования сегодняшнего дня. Практически любой программист микроконтроллеров изучил и принял C, и теперь его преподают большинство колледжей. Рескрипт гласит: «Вы выучите C несмотря ни на что». Я тоже выучил, но мне он не понравился.

Трансформации BASIC

Несколько лет назад компания Parallax представила BASIC Stamp – микроконтроллер на основе PIC со встроенным интерпретатором BASIC (Рисунок 1). Parallax предложил BASIC Stamp – небольшой, дешевый и простой одноплатный микрокомпьютер со своей собственной разновидностью BASIC, оптимизированной для встраиваемых проектов. Я подсел на них и сделал много полезных проектов. Stamp поддерживал жизнь BASIC еще несколько лет, прежде чем он снова исчез.

Микроконтроллер BASIC Stamp компании Parallax.
Рисунок 1. Микроконтроллер BASIC Stamp компании Parallax.

Microsoft внесла вклад в поддержание жизни BASIC своим Visual BASIC. Компания по-прежнему предлагает целую линейку продуктов BASIC. Visual BASIC преподавали в колледже, когда я был профессором. А затем он пропал. Большинство из тех, кто должен был заниматься программированием, сразу перешли на C, и, кажется, сегодня он все еще доминирует.

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

Примерно в то же время я открыл для себя PICAXE. Это однокристальный микроконтроллер PIC, в который зашит интерпретатор BASIC (Рисунок 2). На персональном компьютере вы готовите программу на BASIC, а затем загружаете программу в 8-выводной корпусе DIP микроконтроллера PIC. Такой подход позволяет делать небольшие проекты с помощью однокристального микроконтроллера. Как и Stamp, PICAXE позволяет быстро и легко создавать встраиваемые проекты с минимальными затратами сил и материальных средств. При использовании C это заняло бы у меня в два-четыре раза больше времени.

PICAXE - однокристальный микроконтроллер PIC с внутренним интерпретатором BASIC.
Рисунок 2. PICAXE – однокристальный микроконтроллер PIC с
внутренним интерпретатором BASIC.

Ах да, было бы упущением, если бы я не упомянул некогда популярный Intel 8052. По сути, это версия широко используемых встраиваемых контроллеров 8051. 8052 имел внутренний интерпретатор BASIC (Рисунок 3). Я использовал его в одном проекте. Не думаю, что он все еще доступен.

Микроконтроллер Intel 8052 с внутренним интерпретатором BASIC. (Фото с сайта http://www.retro-lab.nl)
Рисунок 3. Микроконтроллер Intel 8052 с внутренним интерпретатором BASIC.
(Фото с сайта http://www.retro-lab.nl)

Я хочу сказать, что BASIC до сих пор существует и весьма полезен. Тем, кто все еще изучает программирование, я бы посоветовал: побалуйте себя упрощенным языком и получите удовольствие, учась использовать его. Если до сих пор вы откладывали обучение программированию, BASIC – отличный выбор для начала. Большая часть того, что вы узнаете из программирования на BASIC, применима к C или другим языкам.

Скáчки языков

Однажды я ненадолго сошел с прямого пути, отвлекшись на Arduino. Как вы, наверное, знаете, его язык по сути такой же, как C или C++, со всеми обычными точками с запятой и фигурными скобками. Но я никогда не был достаточно компетентен, чтобы заинтересоваться использованием популярного Arduino.

Я полагаю, что большинство языков по-прежнему доступны всем, кому они нужны. Например, что случилось с FORTH? Или с одним из других любимых мною языков – LISP. Я занимался программированием на LISP еще на заре движения искусственного интеллекта. LISP – странный язык, но с ним можно делать удивительные вещи.

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

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

Если не BASIC, то что?

Что, если бы кто-то спросил меня: «Представьте, BASIC больше не доступен, а C вы ненавидите. Какой язык вы бы использовали?». Я ответил бы: «ASSEMBLER». Да-да, язык ассемблера. Он нравится мне, поскольку я могу видеть или, по крайней мере, представлять себе, что происходит внутри чипа. Он ближе к железу, чем что-либо еще.

Сначала я изучал ассемблер на оригинальном Intel 8080, а позже много поработал с Motorola/Freescale 68HC11. Совсем недавно я использовал ассемблер в проекте на MSP430. Если мне нужно запрограммировать микроконтроллер, я предпочитаю ассемблер, хотя иногда это занимает у меня немного больше времени. Я знаю, большинство из вас думают, что я спятил, если простому предпочитаю сложное, например ассемблер. Кстати, а вы когда-нибудь пробовали его?

Одним словом, я до сих пор вожусь с проектами на BASIC и ассемблере. Однако я сохранил способность к непредубежденным суждениям. Возможно, в конце концов, я откажусь от всего этого ретро после прочтения недавнего обзора IEEE.

Какой язык сейчас самый популярный?

Время от времени издаваемый IEEE журнал Spectrum делает довольно подробные обзоры того, на чем нравится программировать членам IEEE. В рейтинге 55 разных языков. Вверху списка находятся Java и C – на втором и третьем местах. А номер один – Python. Удивлены? Да, Python – новый фаворит среди программистов и инженеров, с большим отрывом ушедший от других языков. И теперь это популярный курс в колледжах; Python хороший язык для изучения программирования, очень похожий на BASIC. Я еще не пробовал писать на нем, но программистам, похоже, он нравится, поскольку многие одноплатные компьютеры теперь поддерживают его хорошими библиотеками для встраиваемых приложений. Может быть, и нам стоит попробовать.

Перевод: AlexAAN по заказу РадиоЛоцман

На английском языке: Bring Back BASIC

JLCPCP: 2USD 2Layer 5PCBs, 5USD 4Layer 5PCBs

Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения (только последние 20 сообщений):Полный вариант обсуждения »
  • Нет, не надо хоронить язык. Если есть люди на него программирующие (говорящие). Легче перенести компилятор (интерпретатор), чем переобучать людей. Те небольшие программки, которые на "C" пишут, для ардуины, вполне можно и на бэйсике писать !
  • Эх, ностальгия! Тоже начал изучать программирование с Basic, еще на БК0010, потом уже продолжил на PC в turbo basic. Приятель принес как-то Borland C, сказал что это круче чем Basic и быстрее, мы с ним битый час пытались написать простенькую программку, в итоге по скорости получилось примерно то же самое и осталось не очень приятное впечатление. Сейчас в основном пишу на Си, хоть он мне и не нравится как и автору статьи)) Но люди ко всему привыкают.
  • [IMG]https://dl.dropbox.com/s/ivbs4ikvj7yj4e7/IMG_20201108_082909.jpg?dl=0[/IMG]
  • Все говорят, что С не нравится, но пишут на нём... "Мыши кололись, плакали, но продолжали жрать кактус?"
  • Паскаль рулит!
  • На вкус и цвет все фломастеры разные
  • как говорят хохлы: "от-тож!". В те времена для внуков я написал в один присест программку для проверки таблицы умножения, (то был "встроенный" в МОНИТОР BASIC). Пока обдумывал прогр. для проверки правописания - надобность отпала. Написал прогр. для расчета и визуализации АЧХ R-C фильтров, простая, быстрая - одно удовольствие. Через много лет на IBM PC поставил прогр. для просмотра АЧХ усилителей, какого-то автора с интернета на каком то крутом языке. И скрипит, и пыхтит и упирается. Плюнул. Это я к тому, что простые прогр. вполне можно создавать на простом языке.
  • [COLOR="Red"]Компилятор[/COLOR] BASIC-а для AVR-ок - BASCOM-AVR - отличная штука: синтаксис похож на паскалевский, выходной код не уступает по параметрам СИшному (вроде, на хабре их сравнивали). А у СИ синтаксис... ну совсем не гуманоидный...
  • Для очень больших любителей бэйсика для МК есть mikroBasic для PIC, AVR, FT90, 8051 и ARM (вкл. STM32): [URL="https://www.mikroe.com"]https://www.mikroe.com[/URL]
  • А мне нравится. Oдновременно программирую - встроенную систему на C и C++, управляющую на Java. В один день бывает, хотя непросто. Переключится то переключаешься, но максимальную скорость программирования постигается только через неделю программирования, на одном языке. А вот мыши - в оригинале даже не жрали, другое физиологическое действие исполняли ... ;)
  • Ну, это уже "доработка" младших школьников. А [URL="http://lurkmore.to/Мыши_плакали,_кололись…"]в оригинале[/URL] всё-таки "жрать"
  • Как говорится: "на здоровье". Никто и не отговаривает. А на счет "нравится" - Пушкину очень нравилась осень: "как некоторым нравится чахоточная дева..." А Паратов (арт. Н. Михалков) говорит: "Один любит попадью, а другой свиной хрящик". Прошу прощения за оффтоп.
  • Да, вот именно. Пусть не отговаривать товарища, который BASIC знает и ему нравится. Есть решение, есть BASIC интерпретатор под любой, практически, процессор, там тоже разные предпочтения. И пусть получит удовольствие, все же - программирование есть творчество, радость.
  • Ну да, тем более что я не программист и этим приходится заниматься время от времени, поэтому чем проще язык - тем лучше. Не сказать что Си сложный язык, да, синтаксис своеобразный, но дело даже не в этом. Все-таки Бейсик более человечный что-ли, те же ошибки там выявлялись на раз-два - программа просто останавливается и выдает: вот тут у тебя выход за пределы массива, например, а в Си можно долго и мучительно искать блуждающий баг из-за того, что массив вышел за границы и попортил соседние переменные, даже при наличии внутрисхемной отладки это бывает не просто, а что уж говорить про контроллеры без встроенного debug блока. А так, пока у меня на компе стоял ХР, Бейсиком пользовался часто как калькулятором, чтобы посчитать формулу. Да, можно конечно и в Матлабе сделать, но это из пушки по воробьям, да и Бейсик грузится мгновенно и места на диске не занимает :) Жаль что в контроллерах не довелось с ним поработать, сейчас всетаки Ардуина рулит - наличие готовых библиотек под разные чипы датчиков, дисплеев, интерфейсов и т.д. - это большой плюс, остается только свою несложную логику написать и готово.
  • Мне тоже нравится, когда всё работает с пол пинка, а вот когда начинаются танцы с бубном изза того, что чья-то библиотека косячная не работает нормально или какой-то глюк, который изредка вылезает и плющит встроенную систему -вот тут уже начинаешь нервничать и подумывать может надо кардинально все поменять))
  • нормальный у Си синтаксис, с умилением вспоминаю работу в школе на барсике, и тихим ужасом пасаль, кто хоть раз писал на нем игры или БД, меня поймет... и улыбкой страшилки преподов о злом и ужасном Гудвине в виде языка Си. знакомство с МК начал ассемблера для ПИК , а выучить Си заставила простая лень (лень было заучивать больше сотни команд для АВиРок) . и слава богу что на то время не было барсиков и пасалей для МК. потому что все попадающиеся в последствии проги от бедных студней, преподы которых просекли что в нете им с помощью ничего нормального не светит, и начинающих не в состоянии осилить асм или Си , откровенно напоминают бредо-код. радетелям барсиков, пасалей и некрозов простая задача: одной строкой создать переменную, которую компилятор в коде будет воспринимать, как все порты вода/вывода МК. покажите что это реально, может я не прав в своем субъективном мнении в отношении к барсику и пасалю , потому как в Си это реально и работает.
  • Ну вот, вроде обошлось без мордобоев и даже без личных оскорблений... В заключение, если кто не знает. Когда аглицкие колонизаторы пытались научить аборигенов своему варварскому языку, то отобрали 300 базовых слов и сказали: вам хватит! Потом, уже в 20-м веке эту идею использовали создатели более сложного, чем ассемблер, языка, и назвали его "БАЗОВЫЙ", на варварском языке = BASIC. Тогда же кто-то по недоумию или в шутку назвал его по-русски ВАСИК.
  • Вот это точно! Дебагить процедуры в Бэйсике - одно удовольствие!
  • Потому что интерпретатор. У "С" - компилятор. Нужна внешная программа для дебага. У Java тоже встроенные средства дебага. Если остановится программа - распечатывает стек с точности до строки. Где и что произошло.
  • Борландовский Turbo Basic с которым я работал после Майкрософтовского QBasic'а имел встроенный компилятор и умел создавать exe-файлы. При этом скорость выполнения скомпилированной программы возрастала в разы и не всегда работала также корректно, как в режиме отладки :)
Полный вариант обсуждения »