ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 3

                                  ГЛАВА 1

                                  О Бейсике

          Подобно  омару  штата  Mэн,  кремовому  сиропу  и баскетболу,
      Бейсик  является  продуктом  новой Англии. Созданный  в  1964г. в
      Дортсмутском  колледже  в  Гановере,  Нью  Хемишир,  как язык для
      обучения   программированию,   Бейсик  обычно  ассоциируется  как
      акроним   "BEGINNERS   ALL-PURPOSE   SYMBOLIC  INSTRUCTION  CODE"
      (Общецелевой  код  символьных инструкций для начинающих). (Однако
      циники считают, что изобретатели Джон Кемени и Томас Куртц сперва
      придумали   заковыристое   имя  для  своего  нового,  простого  в
      использовании  языка,  и  только  потом  подвели  под  него базу,
      состряпав что-то такое, на чем это имя могло бы утвердится).  
          Вскоре   и   студенты,   и  программисты  обнаружили,  что  с
      использованием  Бейсика можно делать практически все то же самое,
      что  возможно  с помощью с помощью скучного и трудно преодолимого
      фортрана. А поскольку Бейсик оказался прост как в изучении, так и
      в  работе,  программы  на  нем писались в течении более короткого
      времени,  чем  их  фортранные  эквиваленты. Бейсик оказался также
      приемлемым  для большинства персональных компьютеров. Это открыло
      Бейсику широкую дорогу. 
          Примечательно,что  при  наличии  множества общецелевых языков
      программирования,  доступных  программирующим  фанатикам,  Бейсик
      остается  простейшим для изучения и по истечении 20 лет после его
      введения. Но еще лучше оказывается выполненная на Бейсике работа.
      Вопреки притязаниям снобов Си и Паскаля, Бейсик является вовсе не
      пустяковым  языком,  наделенным  мощными инструментами пригодными
      для  того,  чтобы  браться  за специфическое дело, которое люди в
      большинстве случаев делают с помощью малых компьютеров, а именно,
      за работу с файлами и вывод текстов и графики на дисплей.  
          Хотя их язык имеет своих клеветников, ни один из них не может
      отрицать,  что  Кемени  и  Куртц  достигли  цели  своего Бейсика:
      сделать  программирование  более  доступным  для  большего  числа
      людей. Это привело нас к Турбо-Бейсику. 
          Турбо-Бейсик  является  компиляторным  Бейсиком.  Возможно вы
      знакомы  с  передовым  Бейсиком IBM (называемым GWBASIC на многих
      совместимых    машинах,    но    который   мы   называем   теперь
      "Интерпретаторный  Бейсик"). Одной из популярных Интерпретирующих
      версий компании МИКРОСОФТ. Интерпретирование и компилирование это
      два  базисных  метода  реализации  языков  высокого  уровня.  Для
      понимания   важных   различий  между  этими  двумя  подходами,  а
      следовательно  между  Турбо-Бейсиком и Интерпретаторным Бейсиком,
      нам необходимо кратко остановиться на основах программирования.  


                           Бейсики и машинный язык


          Как  это  ни  удивительно,но  любой данный компьютер способен
      исполнять  программы,  написанные  только  на его родном машинном
      языке.  Существует почти столько же машинных языков, сколько есть
      типов  компьютеров,  но  все  они  представляют  собой  некоторые
      вариации  на  одну  и  ту  же  тему-простые операции, выполняемые
      молниеностно быстро над двоичными числами. На персональных компь-
      ютерах IBM используется семейство машинного языка 8086, поскольку
      их аппаратная конструкция базируется на этом конкретном семействе
      микропроцессоров. 
          Возможно,  хотя и трудно, писать программы непосредственно на
      машинном  языке.В  ранние  годы  компьютеризации  (на заре 1950-х
      годов)  машинный  язык  был  тем  единственным, что сделали люди,
      чтобы  спасти программистов от цепенящего озноба программирования
      в машинных кодах, как некий мост между человеческими существами и
      миром  машинных  языков компьютеров, были созданы высокоуровневые
      (т.е. не машинные) языки.  
          Высокоуровневые языки работают через трансляторные программы,
      которые  переводят  "исходный  код"  (машинно-читабельный  гибрид
      английского  языка  и  математических выражений) и в конце концов
      вынуждают  компьютер  исполнять подходящие инструкции на машинном
      языке  для  выполнения  заданной  работы.  Двумя базисными типами
      трансляторов   являются   интерпретаторы,   которые  сканируют  и
      исполняют  исходный  код в режиме единичного шага, и компиляторы,
      которые  сканируют исходный код, переводя его на машинный язык, а
      результат этого сканирования используется затем отдельно.  

                                Интерпретаторы

          Исторически  Бейсик  обычно  реализовался  как  интерпретатор
      (знакомым  изомером  является сам интерпретаторный Бейсик). Одно,
      часто   упоминаемое   преимущество   интерпретаторной  реализации
      состоит  в  том,  что  она  допускает  "непосредственный  режим".
      Непосредственный  режим  позволяет вам задавать компьютеру задачу
      вроде  PRINT  3.14159*3/2.1  и возвращает вам ответ, как тольковы
      нажмете  клавишу  ENTER  (это  позволяет  использовать  компьютер
      стоимостью  3000  долларов  в  качестве калькулятора стоимотью 10
      долларов).  
          Кроме   того,   интерпретаторы  имеют  специальные  атрибуты,
      которые  упрощают  отладку.  Можно,  например, прервать обработку
      интерпретаторной  программы,  отобразить  содержимое определенных
      переменных,  бегло  просмотреть  программу,  а  затем  продолжить
      исполнение.  
          Болше   всего   программистам   нравится   в  интерпретаторах
      возможность  получения быстрого ответа. Здесь нет необходимости в
      компилировании,   так   как   интерпретатор   всегда   готов  для
      вмешательства  в  вашу  программу. Введите RUN и результат вашего
      самого последнего изменения оказывается на экране.  
          Однако  интерпретаторные языки не без недостатков. Необходимо
      например иметь копию интерпретатора в памяти все время, тогда как
      многие   возможности   интерпретатора,   а  следовательно  и  его
      возможности  могут не быть необходимыми для исполнения конкретной
      программы.  
          Слабо различимым недостатком интерпретаторов является то ,что
      они   имеют   тенденцию   отбивать   охоту   к   хорошему   стилю
      программирования.Поскольку  комментарии  и  другие  формализуемые
      детали  занимают  значительное  место  программной  памяти,  люди
      стремяться   ими  не  пользоваться.  Дьявол  менее  яростен,  чем
      программист,  работающий  на интерпретаторном Бейсике, пытающийся
      получить  программу  в  120К в памяти емкостью 60К. но хуже всего
      то, что интерпретаторы тихоходны. Ими затрачивается слишком много
      времени  на  разгодывание  того,  что  делать,  вместо того чтобы
      заниматься действительно делом.  
          При  исполнении  программных  операторов,интерпретатор должен
      сначала   сканировать  каждый  оператор  с  целью  прочтения  его
      содержимого  (что  этот  человек  просит  меня сделать?), а затем
      выполнить  запрошенную  операцию.  Операторы в циклах сканируются
      излишне много.  
          Рассмотрим программу: 10 FOR N=1 TO 1000 20 PRINT N,SQR(N) 30
      NEXT N при первом переходе по этой программе Бейсик-Интерпретатор
      должен разгадать что означает строка 20:  
          1.преобразовать числовую переменную N в строку
          2.послать строку на экран
          3.переместить в следущую зону печпти
          4.вычислить квадратный корень из N
          5.преобразовать результат в строку
          6.послать строку на экран
          При  втором  проходе  цикла  все это разгадывание повторяется
      снова,так  как  абсолютно  забыты  все  результаты  изучения этой
      строки  какую-то  миллисекунду тому назад. И так во всех следущих
      998 проходах.  
          Совершенно  очевидно,что  если  вам  удалось каким-то образом
      отделить  фазу сканирования/понимания от фазы исполнения вы имели
      бы  более  быструю программу.И это как раз то,для чего существуют
      компиляторы.  


                                 Компиляторы


          Компилятор-это  транслятор  текста  на машинный язык, который
      считывает   исходный   текст,  оценивает  его  в  соответствии  с
      синтаксической  конструкцией  языка и переводит на машинный язык.
      ·атем  вывод  на  машинной  языке (машинный код), прогоняется как
      независимый   шаг  трансляции.  Другими  словами,  компилятор  не
      исполняет  программы,  он  их  строит.  Интерпретаторы невозможно
      отделить от программ, которые ими прогоняются, компиляторы делают
      свое дело и уходят со сцены.  
          При работе с компилирующим языком, таким как Турбо-Бейсик, вы
      придете  к  необходимости  мыслить о ваших программах в признаках
      двух  главных  фаз  их  жизни:  периода  компилирования и периода
      прогона.  
          Улучшение показателей быстродействия, которое вы заметите при
      использовании  Т.Б.,  зависит  от программы. Большинство программ
      Будут    прогоняться    в    четыре...десять   раз   быстрее   их
      интерпретаторных    эквивалентов.   Если   вы   поработаете   над
      улучшением,  то  сможете  достичь  100-кратного  повышения  быст-
      родействия.   Оборотная   сторона   монеты  состоит  в  том,  что
      программы,  расходующие  большую часть времени на возню с файлами
      на  дисках  или  ожидание  ввода,  не  смогут  продемонстрировать
      какое-то впечатляющее увеличение скорости. 

                         Номера строк и Турбо-Бейсик

          Интерпретаторный  Бейсик  нуждается в такой нумерации строк,с
      помощью  которой  он  мог  бы  находить  свой путь при исполнении
      посылок  GOTO,GOSUB  в  программной последовательности.Кроме того
      номера строк являются сердцевиной его редактирования.  
          Допуская  их,  Т.Б. не нуждается в номерах строк. Вместо GOTO
      5000,  в  Т.Б. вы можете сказать что-то типа GOTO ERROR EXIT, где
      выход  по  ошибке  есть  "метка"  в начале подпрограммы выхода по
      ошибке.  Т.Б.  с  самого  начала  конструировался так, чтобы быть
      быстрым.  Эта  цель  была  достигнута  благодаря  интегрированной
      конструкции, которая одновременно удерживает в памяти компилятор,
      редактор   и   программу,   исключая   бесконечные   экскурсы   к
      дисковводам,  которые  приводят  к  тому, что обычные компиляторы
      осуществляют  текстовую  трансляцию  в  10  или 20 раз медленнее.
      Выходящая за нормальные представления скорость компиляции Бейсика
      такова  (тысячи строк в минуту), что сохраняется интерактивность,
      присущая Интерпретаторному Бейсику. Просто нажимантся R-клавиша и
      осуществляется прогон программы Т.Б. 
          Примечание:Если  для  вас  БЕЙСИК  внове,  продолжайте чтение
      и/или  практическое применение данного руководства.Однако бывалым
      Бейсик-программистам, которые имеют намерение преобразовывать код
      Интерпретаторного Б. в Т.Б., целесообразно заглянуть в Приложение
      D "Сравнение Т.Б. с Интерпретаторным Б."


Яндекс цитирования