Чи вважаєте ви, що вплив БАЗАК може пошкодити ваш розум? [зачинено]


32

Навчити хорошого програмування студентам, які мали попереднє опромінення BASIC, практично неможливо: як потенційних програмістів, вони психічно понівечені поза надією на регенерацію

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

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

Багато моїх колег або друзів-програмістів розпочали роботу з BASIC. На запитання нижче є відповіді, які свідчать про те, що багато програмістів мали перший досвід програмування в BASIC. AFAIK багато хороших програмістів почали з програмування BASIC.

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

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

Чи добре вивчити мову програмування, що працює на комп’ютері, повному ресурсів, де початківець програміст може зробити все неправильно, а програма працює без великих проблем? Або краще дізнатися, де програміст не може помилитися?

Що ви можете сказати про BASIC, що допомогло вам стати кращим / гіршим програмістом?

Ви б навчили старого BASIC працювати на 2 КБ (віртуальній) машині майбутньому програмісту?

Впевнений, тільки вплив на БАЗИК поганий. Можливо, ви поділяєте мою думку, що сучасний BASIC не надто допомагає, оскільки сучасний BASIC, як і довгі інші мови програмування, надає засоби, які дозволяють програмісту не думати глибше.

Додаткова інформація: Чому ОСНОВНИЙ?


7
Ви розумієте, що цитата - це щось на кшталт 35 років, правда?
МВС

2
Так. Посилання на Dijkstra має дату публікації.
Маньєро

3
Можливо, на це питання молодші люди не повинні відповідати :-)
Maniero

8
35 років, і я впевнений, що Едді тролінгував, коли писав це. Я б не надто читав це.
Carson63000

3
Я згоден з @Carson; Я б подумав, що тривале опромінення цинічних, зарозумілих та гірких старців зробить вам гірше.
Марк C

Відповіді:


37

Основи, популярні на момент цитування, сильно відрізнялися від тих, що були у нас ще 20 років тому. (Чи вважаєте ви їх серед "сучасних" діалектів?;)

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

У цьому контексті програмісти, які знали лише глобальні змінні, винайшли власні підпрограми (використовуючи більше глобальних змінних для параметрів та повернених значень!), І писали спагетті GOTOs справді були зняті.

Якщо вам сьогодні 30-ти чи молодший, а Базик був вашою першою мовою, це не та мова, про яку говорив Дейкстра. Навіть якщо ви старші і ваш перший Basic мав деякі з цих особливостей, як зазначає Мерф нижче, це все-таки може бути не тією самою мовою, про яку говорив Дейкстра.


Ви оновили питання в контексті, про який я ніколи не знав:

  • Цитата Дайкстра - з 1975 року.

  • Він не був до 6 -й версії , яку ви отримали окремо компільовані процедури - які, я вважаю, показує початок зсуву акценту далеко від GOTO.

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

  • GOSUB / RETURN все ще обробляють лише "прості підпрограми".

  • "Імена змінних обмежувались від A до Z, від A0 до A9, від B0 до B9, ..., Z0 до Z9, даючи максимум 286 можливих чітких змінних." ... і всі вони глобальні.


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

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

1
GOTO aka "масовий випадковий стрибок" - і я вдячний, що стаття стосувалася не "того", а про "як", що, в свою чергу, чому він помилявся, але це зробило для хорошого узагальнення заголовків. (Якщо ви подивитесь, скажімо, на Fortran IV, у вас не було іншого вибору, крім використання goto, але, як мої лектори намагалися продемонструвати - хоч і зірвано впровадженням Fortran 77 - ви могли написати добре структурований код за допомогою gotos)
Мерф

Мені говорили саме про старі діалекти БАЗОВИХ. Я не знаю, чому люди наполягають на думці, що я розмовляю із сучасним БАЗАМ. Для мене сучасний BASIC калічить розум програміста. Він дає майже все приготоване і не потребує глибшого роздуму. Програми BASIC рідко перевищували 1 або 2KLOC і рідко мали більше ста змінних. Сьогодні загальним класом є більше, ніж це, і я бачу, що кілька функцій погано записані навколо цього рахунку. Думаю, що Dijkstra зазнав впливу найгірших програмістів BASIC. Тільки хто мав досвід роботи з BASIC на машинах з обмеженими ресурсами, може розповісти.
Маньєро

@bigown: Але що ти точно вважаєш сучасним? Називати 30-річну мову програмування "сучасною" я, безумовно, не чую.

31

Людина не може зробити нічого кращого, ніж їсти та пити та знаходити задоволення у своїй роботі.

Я засвоїв БАЗОВЕ раніше, ніж будь-що інше (ну, крім алгебри, мабуть). Якщо це серйозно не викривило мою думку, то я не знаю, як пояснити наступні 18 років ...

Що сказало, так що? Dijkstra, можливо, важко навчив мене чому-небудь через мого тривалого впливу BASIC, але йому було б важче навчити мене чомусь через його тривалого впливу на підземну соснову коробку. І навіть з урахуванням цих факторів я досі ніколи не був серйозним студентом CS, серйозним студентом математики чи серйозним студентом у будь-якій іншій дисципліні. Безодня між таким, як я, і таким програмістом, як би хотів бачити Дайкстра, настільки велика, що бути майже незбагненною ...

І все ж ми програмуємо. Ми, хто нарізав зуб на BASIC, грали з FORTRAN, експериментували з COBOL та всім іншим, ми також виявили радість і захоплення цими маленькими машинками, які, мабуть, зовсім не схожі на ту, що вперше залучила містера Едсгера до його поля, ні менш покликання, фундамент довічної праці любові.

... а може, це саме те, що скаже скалічений розум ...


дуже каламутно! Серйозно, хоча це вже питання
RCProgramming

17

Це не БАЗА, що шкодить вам, це невдача піддавати себе іншим мовам. Моноглот "програмісти" не є.


1
абсолютно коректно
RCProgramming

в той час як це правда, я не думаю, що саме про це тоді мав на увазі ЕД
jk.

11

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

Якби BASIC було достатньо, щоб назавжди завдати шкоди людям, то були також і інші ранні мови, і тому у нас не було б людей, які були цілком неушкоджені, щоб розвивати всі мови, якими ми користуємось сьогодні.

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


Assembler - це представлення байтів, якими ви живите комп'ютер. Ви можете замінити BASICз Assemblerв цитаті Дейкстрой, але я вважаю , що це комп'ютерний мову, а не мова програмування. +1 хоч :)
deltreme

1
Я розумію, що Дійкстра виділив базовий тут для швидкої цитати і включив би інші неструктуровані середовища.

2
Звичайно, Dijkstra, можливо, говорив про BASIC, щоб отримати гарний звук. Однак я можу сказати, що те, що ранні комп'ютерні мови, безумовно, не були кращими, і це означало б, що хороші програмісти не могли розробитись приблизно до 1960 року, а хтось, хто розпочав роботу раніше, був завданий постійній шкоді.
Девід Торнлі

5
Якби ви, хлопці, знайшли час, щоб прочитати папір, з якої було взято цитату, ви б зрозуміли, що він також вивалив інші популярні мови того часу, крім ОСНОВНИХ. Він також критикував схильність до антропоморфізації комп'ютерів, яку я можу зрозуміти; вони ненавиджу це.
Хупернікетес

2
@Huperniketes: Так, але Dijkstra незвично ставився до BASIC і COBOL. Він залишив відчуття, що вихідні FORTRAN та PL / I можна вилікувати.
Девід Торнлі

6

Я навчався з BASIC на TRS-80 та Apple II c / e, і вважаю себе хорошим програмістом. Дві риси, які, як я особисто вважаю, призвели до того, що спочатку не були знищені завдяки вивченню ОСНОВА

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

Я визнаю, що вивчення об'єктно-орієнтованого програмування після чистої процедури BASIC деякий час було боротьбою, але я не знаю, чи це було справді пов’язано з BASIC, тому що я до того часу навчився досить великій кількості С .


6

Я теж не згоден з Діккстра. Я те, що важче вивчити другу мову через парадигми, а не тому, що є ОСНОВНИМ.

BASIC була моєю першою мовою на персональному комп’ютері під назвою TK (подібний до Sinclair) у 1985 році. Це був дуже обмежений ресурс. У той час я написав компілятор BASIC з книги, використовуючи шестнадцятковий редактор для розваги. Я купив книгу Z80 і після цього вивчив 8-бітну машинну мову. BASIC мені дуже допоміг у цьому.

Після того, як я вивчу C і Pascal і граю з Асамблеєю за 8080/6. MSX-BASIC, Quick Basic в MS-DOS часи ... VB, Delphi, деякі Java в часи Windows ...

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


5

Я почав з базових на яблучному клоні, коли мені було вісім.

Навіть пізніші версії базових, які мали вбудовані деякі ідеї OOP (qbasic, visual basic тощо), не мали б сенсу у вісімці.

Почати програмування, що рано - одна з причин, що я можу розглянути проблему в потоці програм, і це щось із-за того, що занадто багато людей не можуть зробити добре в цій галузі.

Я думаю, що ранній початок часто вигідний, і для спілкування з дітьми потрібна ДУЖЕ ПРОСТА мова.

Ваш пробіг може відрізнятися ...


4

Я думаю, що вплив більшості БАЗОВИХ прикладів у світі полягає в тому, що калічить мозок програмістів, а не саму мову. Це як програміст C #, який переглядає MSDN і не вважає, що обробка винятків необхідна, або IDisposableтипи насправді не потрібно утилізувати.


4

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

І GOTO - це лише погано, якщо у вас немає нумерації рядків;)


Так! GOTO чудово; це етикетки, які злі ... mwuuuuhahahaha
Mawg

3

Зараз я використовую BASIC, щоб навчити сина писати власні прості ігри. Я ніколи його не використовував, я запустив свого оператора з PowerBuilder та PowerScript і перейшов на C / C ++, а потім на Delphi. Сьогодні я використовую майже всі доступні мови і дуже швидко адаптуюся, оскільки основи всіх мов однакові, математичні формули з різними знаками, операторами та символами. Це також я вчу свого сина, і через це він уже може читати та пояснювати код C ++. У мого сина - 12 BTW.


3

BASIC GOTO- це чудовий спосіб навчити мислення мовою складання . Це не принижує розум, а лише відводить розум від синапсів на основі вуглецю та ближче до транзисторів на основі кремнію.

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


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

2

Основне - це добре - це весело і досить просто. Це може робити веселу графіку 2d, а що ні ... Я дізнався (або намагаюся навчитися), що коли мені було близько 10 або 12, ця мова була цікавою, що зацікавило мене більше вивчати про комп'ютери ...


2

Деякі з найкращих програмістів, яких я знаю, були піддані програмуванню в Basic. Це трохи "конкретніше" і, таким чином, забезпечує краще відчуття того, як може працювати машина низького рівня, ніж багато нових мов (наприклад, це ближче вступ HLL до асемблера).

Цитата Дайкстра - з періоду, коли вчені намагалися підштовхнути тенденцію до чітко виправлених добре структурованих програм, розроблених за специфікацією. Але це не шлях великої порційної галузі. Натомість, багато програмістів епохи Web 2.0 намагаються швидко прототипувати щось, для чого не існує більшості математично чітких специфікацій для доведення коду, оскільки все розвивається занадто швидко, щоб ця специфіка залишалася конкурентоспроможною.

Таким чином, методи програмування проб і помилок пробної та косої риси, які програмування в Basic іноді заохочує, якщо їх трохи очистити в методології, є корисним праймером для мислення RAD.

Я закінчу, зазначивши, що є щонайменше 5 базових перекладачів, які працюють на iPad, таким чином зберігаючи мову доступною навіть на новіших пристроях.


1

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

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

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

Однак сьогодні, хоча я цілком розумію ці речі, і ти не знайдеш мене, щоб я працював будь-якою мовою з базовим назвою (я схильний починати кричати на моніторі фрази на кшталт "дурний Fisher Price Language", як це але, знову ж таки, відкидає мої недбалі фігурні підтяжки), я визнаю, що легше робити продуктивні речі з мовами, які абстрагують механіку процесора, ніж це було 35 років тому (або 25 років тому, в моєму особистому досвіді та прикладі)


1

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


1

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

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

Але мій досвід BASIC мені дуже допоміг на моєму курсі Комп'ютерної архітектури коледжу, де мені довелося вивчити мову складання (MIPS). Збірка управління потоком мови дуже багато , як BASIC - х: Стрибає = GOTO, гілки = IF... GOTO, jal(виклик) ... jr( у відставці) = GOSUB... RETURN. Ось і весь необхідний контрольний потік!

Чи добре вивчити мову програмування, що працює на комп’ютері, повному ресурсів, де початківець програміст може зробити все неправильно, а програма працює без великих проблем? Або краще дізнатися, де програміст не може помилитися?

Я б сказав, що краще вчитися на комп’ютері з обмеженими ресурсами. Не тому, що "програміст не може помилитися", а тому, що поріг "прохолоди" значно нижчий. Новачок-програміст може не знати, як зробити чудовий шутер від першої особи для свого ПК. Але вони могли написати чудову гру Pac Man для свого TI-89 та використати обладнання на повний потенціал. І це відчуття сили.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.