Как вы думаете, воздействие Бейсика может нанести вред вашему разуму? [закрыто]


32

Практически невозможно обучить хорошему программированию студентов, которые ранее имели опыт работы с BASIC: как потенциальные программисты, они изуродованы умом, не надеясь на возрождение

- Эдсгер В. Дейкстра

Я глубоко уважаю Дейкстру, но не согласен со всем, что он сказал / написал. Я особенно не согласен с этой цитатой на связанной бумаге, написанной 35 лет назад о реализации Dartmouth BASIC .

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

Я не говорю о Visual Basic или других "современных" диалектах BASIC, работающих на машинах, полных ресурсов. Я говорю о старом BASIC, работающем на «игрушечном» компьютере, когда программисту приходилось беспокоиться о сохранении небольших чисел, которые не нужно вычислять как строку, чтобы сохранить ничтожный байт, потому что на компьютере их было всего несколько сотен, или приходится использовать вычисленное goto из-за отсутствия более мощной функции и многих других вещей, которые требуют, чтобы программист много думал, прежде чем что-то делать, и заставлял программиста проявлять творческий подход.

Если у вас был опыт работы со старым BASIC на машине с ограниченными ресурсами (имейте в виду, что простой микроконтроллер сегодня имеет гораздо больше ресурсов, чем компьютер 1975 года), думаете ли вы, что BASIC поможет вашему разуму найти лучшие решения, подумать как инженер или бейсик перетащить тебя на темную сторону программирования и изуродовать тебя умственно?

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

Что вы можете сказать о Бейсике, который помог вам стать лучше / хуже программистом?

Будете ли вы обучать начинающего программиста старому BASIC, работающему на 2KB (виртуальной) машине?

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

Дополнительная информация: почему бейсик?


7
Вы понимаете, что цитата примерно 35 лет, верно?
МВД

2
Да. Ссылка на Dijkstra имеет дату публикации.
Маньеро

3
Возможно, на этот вопрос не должны отвечать молодые люди :-)
Maniero

8
35 лет, и я почти уверен, что Эдди тоже троллил, когда писал это. Я не стал бы читать слишком много в этом.
Carson63000

3
Я согласен с @Carson; Я думаю, что длительное пребывание на циничных, высокомерных и горьких стариках будет хуже для вас.
Марк С

Ответы:


37

Основы, популярные на момент цитирования, сильно отличались от того, что было у нас даже 20 лет назад. (Считаете ли вы их среди своих «современных» диалектов?

Забудьте о циклах, подпрограммах, локальных переменных и обо всем, что подчеркивало структурированное программирование (из которых Дейкстра и Кнут были большими сторонниками). У тебя был GOTO, и тебе понравилось .

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

Если вам сегодня 30 лет или меньше, и Basic был вашим родным языком, это был не тот язык, о котором говорил Дейкстра. Даже если вы старше и ваш первый Basic обладал некоторыми из этих функций, как прокомментировал Мёрф ниже, возможно, это не тот язык, о котором говорил Дейкстра.


Вы обновили вопрос с контекстом, которого я никогда не знал:

  • Цитата Дейкстры с 1975 года.

  • Он не был до 6 -й версии , который вы получили отдельно компилируемые процедуры - которые, я считаю, показывает начало смещения акцента далеко от GOTO.

  • «В 1976 году Стив Гарланд добавил функции структурированного программирования для создания Dartmouth SBASIC, прекомпилятора, который генерировал выходные данные версии 6 ...» [ Wikipedia ] Контекст цитаты явно предшествует тому, что мы теперь знаем как управляющие структуры, и многие пользователи время могло бы быть лучше знакомо со второй до последней версии - то есть двумя версиями до версии Garland версии v5 и до отдельно компилируемых процедур.

  • GOSUB / RETURN по-прежнему обрабатывают только «простые подпрограммы».

  • «Имена переменных были ограничены от A до Z, от A0 до A9, от B0 до B9, ..., от Z0 до Z9, что дало максимум 286 возможных различных переменных». ... и все они глобальные.


2
Мое первое знакомство было с BASIC (в 1979 году) - но, как это ни парадоксально, диалектом, в котором были параметризованные процедуры и для которого вы могли редактировать код во внешнем текстовом редакторе, хотя я делал больше вещей с менее изящной версией. Когда в 1982 году меня учили Структурному Программированию (и Паскалю как языку для реализации того же самого), это было похоже на восход солнца утром ... В последний раз я использовал GOTO на условно "правильном" языке (DIBOL) примерно в 1990 ...
Murph

@Murph: Я заканчиваю тем, что использую goto несколько раз в год ... но по тому же принципу "goto считается вредным" было связано с глобальными goto, которые я упоминал выше, а не с локальными gotos.

1
GOTO aka «массивный случайный скачок» - и я ценю, что статья была не о том «что», а о том «как», что, в свою очередь, и объясняет, почему он ошибался, но это послужило хорошим обобщением для заголовков. (Если вы посмотрите, скажем, на Fortran IV, у вас не было другого выбора, кроме как использовать goto, но, как пытались продемонстрировать мои лекторы - хотя это и не помогло с введением Fortran 77 - вы могли бы написать хорошо структурированный код, используя gotos)
Murph

Мне говорили именно о старых базовых диалектах. Я не знаю, почему люди настаивают на том, что я говорю с современным бейсиком. Для меня современный бейсик искажает мысли программиста. Это дает почти все приготовленное и не требует более глубоких размышлений. Программы BASIC редко превышали 1 или 2 KLOC и редко имели более ста переменных, сегодня класс обычно имеет больше, чем это, и я вижу несколько функций, плохо написанных по этому количеству. Я думаю, что у Дейкстры были худшие программисты на Бейсике. Только тот, кто имел опыт работы с BASIC на ограниченных ресурсах, может сказать.
Маньеро

@bigown: Но что именно ты считаешь современным? Называть 30-летний язык программирования «современным» для меня определенно необычно.

31

Человек не может сделать ничего лучше, чем есть, пить и находить удовлетворение в своей работе.

Я выучил бейсик раньше всего (ну, кроме алгебры, наверное). Если это серьезно не исказило мой разум, то я не знаю, как объяснить следующие 18 лет ...

Тем не менее, и что? Дейкстре, возможно, будет трудно научить меня чему-либо из-за моего длительного контакта с Бейсиком, но ему будет труднее научить меня чему-либо из-за его длительного пребывания в подземной сосновой коробке. И даже с учетом этих факторов я никогда не был серьезным студентом CS, серьезным математиком или серьезным студентом в любой другой дисциплине. Пропасть между кем-то вроде меня и программистом Дейкстрой, которую хотелось бы видеть, настолько велика, что кажется почти непостижимой ...

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

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


очень маленький! Серьезно, хотя это вопрос мнения
RCProgramming

17

Это не бейсик, который причиняет тебе боль, это неспособность разоблачить себя на других языках. Моноглоты "программисты" нет.


1
абсолютно правильно
RCProgramming

в то время как это правда, я не думаю, что это то, о чем говорил ЭД в то время
jk.

11

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

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

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


Ассемблер - это представление байтов, которые вы подаете на компьютер. Вы могли бы заменить BASICна Assemblerв цитате Дейкстры, но я бы посчитал, что это компьютерный язык, а не язык программирования. +1 хотя :)
deltreme

1
Насколько я понимаю, Дейкстра выделил здесь Basic для быстрой цитаты и включил бы другие неструктурированные среды.

2
Конечно, Дейкстра, возможно, говорил о Бейсике, чтобы получить хороший звук. Тем не менее, моя точка зрения заключается в том, что ранние компьютерные языки были, безусловно, не лучше, и это означало бы, что хорошие программисты не могли развиваться примерно до 1960 года, и любой, кто начинал раньше, был навсегда поврежден.
Дэвид Торнли

5
Если бы вы, ребята, нашли время, чтобы прочитать статью, из которой была взята цитата, вы бы обнаружили, что он также уничтожил другие популярные языки того времени, кроме Бейсика. Он также критиковал тенденцию антропоморфизировать компьютеры, что я могу понять; они ненавидят это.
Гуперникетес

2
@Huperniketes: Да, но Дейкстра была необычайно умопомрачительной по поводу Бейсика и Кобола. Он оставил ощущение, что ФОРТРАН и PL / I можно вылечить.
Дэвид Торнли

6

Я учился с BASIC на TRS-80 и Apple II c / e, и считаю себя хорошим программистом. Две черты, которые я лично считаю, привели к тому, что они не были разрушены при изучении бейсика:

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

Я признаю, что изучение объектно-ориентированного программирования после чисто процедурного BASIC было непростой задачей, но я не знаю, действительно ли это было связано с BASIC, так как к тому времени я также выучил достаточное количество C ,


6

Я тоже не согласен с Дейкстрой. Мне кажется, что выучить второй язык сложнее, потому что парадигмы, а не потому, что это BASIC

BASIC был моим первым языком на персональном компьютере под названием TK (Sinclair like) в 1985 году. Это был очень ограниченный ресурс. В то время я написал компилятор BASIC из книги, используя шестнадцатеричный редактор для развлечения. Я купил книгу Z80 и после этого выучил 8-битный машинный язык. Бейсик мне очень помог с этим.

После я изучаю C и Pascal и играю с Assembly на 8080/6. MSX-BASIC, Quick Basic во времена MS-DOS ... VB, Delphi, немного Java во времена Windows ...

Сегодня работа с прогрессом (4gl), .net (C # / VB), php и я не чувствую себя циклопом. : О)


5

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

Даже более поздние версии basic, в которые были включены некоторые идеи ООП (qbasic, visual basic и т. Д.), Не имели бы смысла в Eight.

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

Я думаю, что раннее начало часто выгодно, и при работе с малышами требуется ОЧЕНЬ ПРОСТОЙ язык.

Ваш пробег может варьироваться ...


4

Я думаю, что знакомство с большинством базовых примеров в мире - это то, что калечит мозги программистов, а не сам язык. Это похоже на программиста на C #, который просматривает MSDN и не считает, что обработка исключений необходима или что IDisposableтипы на самом деле не нужно удалять.


4

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

И GOTO плохо только если у вас нет нумерации строк;)


Ага! GOTO в порядке; это злые ярлыки ... mwuuuuhahahaha
Mawg

3

В настоящее время я использую Бейсик, чтобы научить сына писать свои собственные простые игры. Я никогда не использовал его, я начал свою карьеру с PowerBuilder и PowerScript и перепрыгнул на C / C ++, а затем на Delphi. Сегодня я использую почти все доступные языки и очень быстро адаптируюсь, потому что основа всех языков одинакова - математические формулы с разными знаками, операторами и символами. Это то, чему я учу своего сына, и поэтому он уже может читать и объяснять код C ++. Моему сыну 12 лет.


3

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

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


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

2

Базовый - это хорошо - это весело и довольно просто. Он может делать забавную 2-мерную графику, а что нет ... Я узнал (или попытался выучить), что когда мне было около 10 или 12 лет, это был забавный язык, который заинтересовал меня в изучении большего. о компьютерах ...


2

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

Цитата Дейкстры относится к периоду времени, когда ученые пытались подтолкнуть тенденцию к доказательственно корректным, хорошо структурированным программам, разработанным на основе спецификации. Но это не тот путь, которым пошла большая часть промышленности. Вместо этого, многие программисты эпохи Web 2.0 пытаются быстро создать прототип, для которого не существует большей части математически строгой спецификации для проверки кода, потому что вещи развиваются слишком быстро, чтобы эта спецификация оставалась конкурентоспособной.

Таким образом, методы проб и ошибок, которые поощряются программированием в Basic, когда они немного очищены в методологии, являются полезной основой для RAD-мышления.

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


1

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

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

Я помню, как я отчаянно пытался выучить «машинный код» в возрасте 15 лет после более чем 3 лет работы с VZ200, C64 и Apple] [e BASIC, это был грубый сигнал.

Однако в наши дни, несмотря на то, что я - полный сноб об этих вещах, и вы не найдете меня работающим счастливо ни на одном языке с BASIC в названии (я, как правило, начинаю кричать на фразы монитора, такие как «глупый язык Fisher Price Language»). опять же, отвергая мои небрежные фигурные скобки), я признаю, что легче делать продуктивные вещи с языками, которые абстрагируют механику процессора, чем это было 35 лет назад (или 25 лет назад, по моему личному опыту и примеру)


1

для тех из нас, кто загружал ассемблерный код в компьютеры Speer Micro-LINC по одному байту за раз через набор из 8 переключателей на передней панели и сохранял их на лентах PDP еще в 1972 году, я буду однозначно утверждать, что Дейкстра был напыщенным подонком. Все, что он презирал в Basic, было правдоподобно в пиках о ассемблере, с которым я работал, и все же я и тысячи других людей оправились от нашего контакта с ассемблером, а затем Basic, Fortran, Cobol и C и т. Д.


1

Я начал программировать с GW-BASIC в начале 1990-х. Мой разум не был изуродован. Я перешел к лучшим языкам, таким как Pascal, C, C ++, Java, C # и Python.

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

Но мой базовый опыт очень помог мне в моем курсе по компьютерной архитектуре в колледже, где мне пришлось изучать язык ассемблера (MIPS). Сборка управления потоком языка очень много , как BASIC - х: Прыгает = GOTO, ветви = IF... GOTO, jal(вызов) ... jr( в отставке) = GOSUB... RETURN. Вот и весь поток управления, который вам нужен!

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

Я бы сказал, что лучше учиться на компьютере с ограниченными ресурсами. Не потому, что «программист не может ошибаться», а потому, что порог «крутости» намного ниже. Программист-новичок может не знать, как сделать отличный шутер от первого лица для своего ПК. Но они могли бы написать отличную игру для Pac Man для своего TI-89 и использовать аппаратные средства в полной мере. И это чувство силы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.