Практически невозможно обучить хорошему программированию студентов, которые ранее имели опыт работы с BASIC: как потенциальные программисты, они изуродованы умом, не надеясь на возрождение
Я глубоко уважаю Дейкстру, но не согласен со всем, что он сказал / написал. Я особенно не согласен с этой цитатой на связанной бумаге, написанной 35 лет назад о реализации Dartmouth BASIC .
Многие из моих коллег или друзей-программистов начали с BASIC, ответы на приведенные ниже вопросы указывают на то, что многие программисты получили свой первый опыт программирования на BASIC. AFAIK многие хорошие программисты начинали с программирования на BASIC.
Я не говорю о Visual Basic или других "современных" диалектах BASIC, работающих на машинах, полных ресурсов. Я говорю о старом BASIC, работающем на «игрушечном» компьютере, когда программисту приходилось беспокоиться о сохранении небольших чисел, которые не нужно вычислять как строку, чтобы сохранить ничтожный байт, потому что на компьютере их было всего несколько сотен, или приходится использовать вычисленное goto из-за отсутствия более мощной функции и многих других вещей, которые требуют, чтобы программист много думал, прежде чем что-то делать, и заставлял программиста проявлять творческий подход.
Если у вас был опыт работы со старым BASIC на машине с ограниченными ресурсами (имейте в виду, что простой микроконтроллер сегодня имеет гораздо больше ресурсов, чем компьютер 1975 года), думаете ли вы, что BASIC поможет вашему разуму найти лучшие решения, подумать как инженер или бейсик перетащить тебя на темную сторону программирования и изуродовать тебя умственно?
Хорошо ли изучать язык программирования, работающий на компьютере, полном ресурсов, где начинающий программист может делать все неправильно, и программа работает без больших проблем? Или лучше узнать, где программист не может ошибиться?
Что вы можете сказать о Бейсике, который помог вам стать лучше / хуже программистом?
Будете ли вы обучать начинающего программиста старому BASIC, работающему на 2KB (виртуальной) машине?
Конечно, только воздействие Бейсика плохо. Может быть, вы разделяете мое мнение, что современный BASIC не слишком помогает, потому что современный BASIC, как и другие языки программирования, предоставляет средства, которые позволяют программисту не думать глубже.
Дополнительная информация: почему бейсик?
Ответы:
Основы, популярные на момент цитирования, сильно отличались от того, что было у нас даже 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 возможных различных переменных». ... и все они глобальные.
источник
Человек не может сделать ничего лучше, чем есть, пить и находить удовлетворение в своей работе.
Я выучил бейсик раньше всего (ну, кроме алгебры, наверное). Если это серьезно не исказило мой разум, то я не знаю, как объяснить следующие 18 лет ...
Тем не менее, и что? Дейкстре, возможно, будет трудно научить меня чему-либо из-за моего длительного контакта с Бейсиком, но ему будет труднее научить меня чему-либо из-за его длительного пребывания в подземной сосновой коробке. И даже с учетом этих факторов я никогда не был серьезным студентом CS, серьезным математиком или серьезным студентом в любой другой дисциплине. Пропасть между кем-то вроде меня и программистом Дейкстрой, которую хотелось бы видеть, настолько велика, что кажется почти непостижимой ...
И все же мы программируем. Мы, которые работали с BASIC, играли с FORTRAN, экспериментировали с COBOL и всеми остальными, мы также нашли радость и восхищение этими маленькими машинами, которые, хотя, возможно, и совершенно не похожи на те, которые впервые привлекли мистера Эдсгера к своей области, меньше призвание, основа для пожизненного труда любви.
... или, может быть, это то, что сказал бы изуродованный разум ...
источник
Это не бейсик, который причиняет тебе боль, это неспособность разоблачить себя на других языках. Моноглоты "программисты" нет.
источник
BASIC, со структурной точки зрения, был не хуже ассемблера или COBOL. В то время у нас не было множества языков, происходящих из Алгола, у нас сейчас Паскаль был первым знакомством с разумными структурами управления, которым обладал большинство людей (а я не очень люблю структуры управления Паскаля).
Если бы BASIC было достаточно, чтобы навсегда навредить людям, то были бы и другие ранние языки, и поэтому у нас не было бы достаточно невредимых людей, чтобы развивать все языки, которые мы используем сегодня.
Вполне возможно, что Дейкстра тогда имел дело с людьми, которые не были хорошими программистами и никогда не будут, кто научился делать некоторые вещи на бейсике. Это самая благотворительная интерпретация, которую я могу дать в заявлении.
источник
BASIC
наAssembler
в цитате Дейкстры, но я бы посчитал, что это компьютерный язык, а не язык программирования. +1 хотя :)Я учился с BASIC на TRS-80 и Apple II c / e, и считаю себя хорошим программистом. Две черты, которые я лично считаю, привели к тому, что они не были разрушены при изучении бейсика:
Я признаю, что изучение объектно-ориентированного программирования после чисто процедурного BASIC было непростой задачей, но я не знаю, действительно ли это было связано с BASIC, так как к тому времени я также выучил достаточное количество C ,
источник
Я тоже не согласен с Дейкстрой. Мне кажется, что выучить второй язык сложнее, потому что парадигмы, а не потому, что это 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 и я не чувствую себя циклопом. : О)
источник
Я начал с базового на яблочном клоне, когда мне было восемь лет.
Даже более поздние версии basic, в которые были включены некоторые идеи ООП (qbasic, visual basic и т. Д.), Не имели бы смысла в Eight.
Раннее начало программирования - одна из причин, по которой я могу обдумать проблему в потоке программ, и это слишком сложно для многих людей в этой отрасли.
Я думаю, что раннее начало часто выгодно, и при работе с малышами требуется ОЧЕНЬ ПРОСТОЙ язык.
Ваш пробег может варьироваться ...
источник
Я думаю, что знакомство с большинством базовых примеров в мире - это то, что калечит мозги программистов, а не сам язык. Это похоже на программиста на C #, который просматривает MSDN и не считает, что обработка исключений необходима или что
IDisposable
типы на самом деле не нужно удалять.источник
У любого возникнет проблема, если он не сможет определить проблемы на своем текущем языке и не только сможет обойти их, но и найдет другой, созданный для решения проблемы.
И GOTO плохо только если у вас нет нумерации строк;)
источник
В настоящее время я использую Бейсик, чтобы научить сына писать свои собственные простые игры. Я никогда не использовал его, я начал свою карьеру с PowerBuilder и PowerScript и перепрыгнул на C / C ++, а затем на Delphi. Сегодня я использую почти все доступные языки и очень быстро адаптируюсь, потому что основа всех языков одинакова - математические формулы с разными знаками, операторами и символами. Это то, чему я учу своего сына, и поэтому он уже может читать и объяснять код C ++. Моему сыну 12 лет.
источник
Бейсик
GOTO
- отличный способ научить мышлению на ассемблере . Он не искажает разум, он только отдаляет разум от синапсов на основе углерода и приближает его к кремниевым транзисторам.Однако давайте сравним BASIC с LOGO. BASIC может отвлечь маленьких детей от программирования, потому что, чтобы написать простую забавную программу, все, что вы можете сделать, это продолжать печатать очень, очень длинную программу, напечатанную в журнале, тогда как с LOGO однострочник может рисовать очень впечатляющую графику, что важно в привлечении детей.
источник
Базовый - это хорошо - это весело и довольно просто. Он может делать забавную 2-мерную графику, а что нет ... Я узнал (или попытался выучить), что когда мне было около 10 или 12 лет, это был забавный язык, который заинтересовал меня в изучении большего. о компьютерах ...
источник
Некоторые из лучших знакомых мне программистов рано познакомились с программированием на Basic. Он немного более «конкретен» и, таким образом, дает лучшее представление о том, как на самом деле может работать машина низкого уровня, чем многие новые языки (например, это более подробное введение в HLL для ассемблера).
Цитата Дейкстры относится к периоду времени, когда ученые пытались подтолкнуть тенденцию к доказательственно корректным, хорошо структурированным программам, разработанным на основе спецификации. Но это не тот путь, которым пошла большая часть промышленности. Вместо этого, многие программисты эпохи Web 2.0 пытаются быстро создать прототип, для которого не существует большей части математически строгой спецификации для проверки кода, потому что вещи развиваются слишком быстро, чтобы эта спецификация оставалась конкурентоспособной.
Таким образом, методы проб и ошибок, которые поощряются программированием в Basic, когда они немного очищены в методологии, являются полезной основой для RAD-мышления.
В заключение я отмечу, что на iPad доступно как минимум 5 базовых переводчиков, что позволяет поддерживать язык даже на самых новых устройствах.
источник
Я думаю, учитывая, что этой цитате 35 лет, она во многом связана с отсутствием абстракции, которая была доступна в языках программирования, и тем, что вам нужно было знать, чтобы хорошо развиваться, когда это было сказано.
Наличие языка, подобного бейсику, мало учит вас программированию на низком уровне, что было гораздо более необходимым в прошлом, чем сейчас, и создало бы ошибочное впечатление, что программирование было проще, чем оно есть на самом деле.
Я помню, как я отчаянно пытался выучить «машинный код» в возрасте 15 лет после более чем 3 лет работы с VZ200, C64 и Apple] [e BASIC, это был грубый сигнал.
Однако в наши дни, несмотря на то, что я - полный сноб об этих вещах, и вы не найдете меня работающим счастливо ни на одном языке с BASIC в названии (я, как правило, начинаю кричать на фразы монитора, такие как «глупый язык Fisher Price Language»). опять же, отвергая мои небрежные фигурные скобки), я признаю, что легче делать продуктивные вещи с языками, которые абстрагируют механику процессора, чем это было 35 лет назад (или 25 лет назад, по моему личному опыту и примеру)
источник
для тех из нас, кто загружал ассемблерный код в компьютеры Speer Micro-LINC по одному байту за раз через набор из 8 переключателей на передней панели и сохранял их на лентах PDP еще в 1972 году, я буду однозначно утверждать, что Дейкстра был напыщенным подонком. Все, что он презирал в Basic, было правдоподобно в пиках о ассемблере, с которым я работал, и все же я и тысячи других людей оправились от нашего контакта с ассемблером, а затем Basic, Fortran, Cobol и C и т. Д.
источник
Я начал программировать с GW-BASIC в начале 1990-х. Мой разум не был изуродован. Я перешел к лучшим языкам, таким как Pascal, C, C ++, Java, C # и Python.
Я не смог бы написать программу на бейсике сегодня; Я забыл, как думать с точки зрения номеров строк. Не то чтобы это проблема.
Но мой базовый опыт очень помог мне в моем курсе по компьютерной архитектуре в колледже, где мне пришлось изучать язык ассемблера (MIPS). Сборка управления потоком языка очень много , как BASIC - х: Прыгает =
GOTO
, ветви =IF
...GOTO
,jal
(вызов) ...jr
( в отставке) =GOSUB
...RETURN
. Вот и весь поток управления, который вам нужен!Я бы сказал, что лучше учиться на компьютере с ограниченными ресурсами. Не потому, что «программист не может ошибаться», а потому, что порог «крутости» намного ниже. Программист-новичок может не знать, как сделать отличный шутер от первого лица для своего ПК. Но они могли бы написать отличную игру для Pac Man для своего TI-89 и использовать аппаратные средства в полной мере. И это чувство силы.
источник