BASIC에 노출되면 마음이 손상 될 수 있다고 생각하십니까? [닫은]


32

BASIC에 미리 노출 된 학생들에게 좋은 프로그래밍을 가르치는 것은 사실상 불가능합니다 : 잠재적 인 프로그래머로서 그들은 재생의 희망을 넘어 정신적으로 절단됩니다.

- 에츠 허르 데이크 스트라

나는 Dijkstra를 깊이 존중하지만 그가 말하거나 쓴 모든 것에 동의하지 않습니다. 나는 다트머스 베이직 구현에 대해 35 년 전에 쓴 링크 된 논문에 대해이 의견에 동의하지 않는다 .

저의 동료 또는 친구 프로그래머 중 상당수는 BASIC으로 시작했으며 아래 질문에는 많은 프로그래머가 BASIC에서 프로그래밍에 대한 첫 경험이 있음을 나타내는 답변이 있습니다. AFAIK 많은 훌륭한 프로그래머들이 BASIC 프로그래밍을 시작했습니다.

저는 리소스가 가득한 머신에서 실행되는 Visual Basic 또는 다른 "현대"방언에 대해 이야기하지 않습니다. 나는 "장난감"컴퓨터에서 실행되는 옛날 BASIC에 대해 이야기하고 있는데, 프로그래머는 컴퓨터에 수백 개만 있었기 때문에 상당히 적은 바이트를 저장하기 위해 문자열로 계산할 필요가없는 작은 숫자를 저장하는 것에 대해 걱정해야했다. 더 강력한 기능이 부족하고 계산 된 goto를 사용해야하며 프로그래머가 무언가를하고 창의력을 발휘하기 전에 많은 것을 생각해야합니다.

자원이 한정된 기계에서 구식 BASIC을 경험 한 적이 있다면 (1975 년 간단한 마이크로 컨트롤러가 컴퓨터보다 훨씬 많은 자원을 보유하고 있음을 명심하십시오.) BASIC이 더 나은 솔루션을 찾고 엔지니어 나 베이직처럼 당신을 프로그래밍의 어두운면으로 끌어 들이고 정신적으로 절단 했습니까?

초보자 프로그래머가 모두 잘못 할 수 있고 큰 문제없이 프로그램이 실행되는 리소스로 가득 찬 컴퓨터에서 실행되는 프로그래밍 언어를 배우는 것이 좋습니까? 아니면 프로그래머가 잘못 갈 수없는 곳을 배우는 것이 더 낫습니까?

BASIC에 대해 당신이 더 나은 / 나쁜 프로그래머가되는 데 무엇이 도움이 되었습니까?

2KB (가상) 머신에서 실행되는 기존 BASIC을 다가오는 프로그래머에게 가르치시겠습니까?

물론 BASIC에만 노출되는 것은 좋지 않습니다. 현대 BASIC은 다른 프로그래밍 언어와 마찬가지로 프로그래머가 더 깊이 생각할 수없는 기능을 제공하기 때문에 현대 BASIC이 너무 도움이되지 않는다는 내 의견을 공유 할 수 있습니다.

추가 정보 : 왜 베이직인가?


7
당신은 견적이 35 세와 같다는 것을 알고 있습니까?
MIA

2
예. Dijkstra에 대한 링크에는 게시 날짜가 있습니다.
Maniero

3
어쩌면이 질문에 젊은 사람들은 대답하지 않아야합니다 :-)
Maniero

8
35 살이었고 에디도 글을 쓸 때 트롤링을하고 있다고 확신합니다. 나는 그것에 대해 너무 많이 읽지 않을 것입니다.
Carson63000

3
@Carson에 동의합니다. 냉소적이고 거만하고 쓴 노인들에게 장기간 노출되면 당신에게 더 나빠질 것이라고 생각합니다.
Mark C

답변:


37

인용 당시 인기있는 기본 사항은 20 년 전과 매우 다릅니다. (당신은 당신의 "현대"방언 중에서 그것들을 세고 있습니까?;)

루프, 서브 루틴, 지역 변수 및 구조적 프로그래밍 (Dijkstra와 Knuth가 큰 지지자)이 강조한 모든 것을 잊어 버리십시오. 당신은 GOTO를 가지고 있었고 그것을 좋아 했습니다.

이러한 맥락에서 전역 변수 만 알고 프로그래머는 자체 서브 루틴을 발명하고 (매개 변수 및 반환 값에 더 많은 전역 변수를 사용) 스파게티 GOTO를 작성했습니다.

오늘 30 대 이하의 젊은이이고 Basic이 모국어 인 경우 Dijkstra와 같은 언어가 아닙니다. 나이가 많고 첫 번째 Basic에 이러한 기능 중 일부가 있었지만 Murph는 아래에서 언급했듯이 Dijkstra와 같은 언어가 아닐 수도 있습니다.


이전에 알지 못했던 컨텍스트로 질문을 업데이트했습니다.

  • Dijkstra의 인용문은 1975 년입니다.

  • 버전 6까지는 별도로 컴파일 가능한 프로 시저를 얻지 못했습니다 . GOTO에서 벗어난 포커스의 시작을 보여줍니다 .

  • "1976 년, 스티브 화환이 추가 된 구조 프로그래밍 ... 다트머스 SBASIC, 버전 6 출력을 생성 된 프리 컴파일러를 만들 수 있습니다" [ 위키 백과 ] 견적의 상황은 우리가 지금 제어 구조로 알고 전에 명확하게, 그리고 많은 사용자 - 즉, 시간은 초 - 투 - 최신 버전 더 잘 알고 있었어요 수있는 두 개의 화환의 이전 버전, V5 및 이전에 개별적으로 컴파일 가능한 절차이다.

  • GOSUB / RETURN은 여전히 ​​"간단한 서브 루틴"만 처리합니다.

  • "가변 이름은 A ~ Z, A0 ~ A9, B0 ~ B9, ..., Z0 ~ Z9로 제한되어 최대 286 개의 고유 변수를 제공했습니다." ... 그리고 그들은 모두 세계적입니다.


2
첫 번째 노출은 BASIC (1979 년)이었습니다. 그러나 역설적으로 매개 변수화 된 프로 시저를 가지고 있으며 외부 텍스트 편집기에서 코드를 편집 할 수있는 방언이지만, 덜 우아한 버전으로 더 많은 작업을 수행했습니다. 1982 년에, 나는 구조화 된 프로그래밍 (그리고 그것을 구현하는 언어로서의 파스칼)을 배웠을 때, 아침에지는 태양과 같았습니다. 1990 ...
Murph

@Murph : 1 년에 몇 번 goto를 사용하게되었지만 같은 의미에서 "해로운 것으로 간주되는 goto"는 로컬 gotos가 아니라 위에서 언급 한 글로벌 gotos에 관한 것이 었습니다.

1
GOTO 일명 "대규모의 랜덤 도약"– 그리고 그 논문은 "무엇"이 아니라 "어떻게"에 관한 것이었기 때문에 그가 틀린 이유 였지만 그것은 좋은 헤드 라인 잡기 일반화를 만들었습니다. (Fortran IV를 살펴보면 goto를 사용하는 것 외에는 선택의 여지가 많지 않지만 강사가 Fortran 77을 소개하여 호의를 보였지만 고토를 사용하여 잘 구성된 코드를 작성할 수 있습니다)
Murph

나는 오래된 BASIC 방언에 대해 정확히 이야기했습니다. 나는 사람들이 왜 내가 현대의 베이직과 이야기하고 있다고 생각하는지 주장하지 않습니다. 나에게 현대 BASIC은 프로그래머의 마음을 무너 뜨렸다. 그것은 거의 모든 요리를 제공하며 더 깊이 생각할 필요가 없습니다. BASIC 프로그램은 거의 1 또는 2KLOC 이상이었고 거의 100 개 이상의 변수를 가지지 않았습니다. 오늘날에는 이보다 많은 변수가있는 클래스가 일반적이며이 함수를 중심으로 여러 함수가 잘못 작성된 것을 볼 수 있습니다. 제 생각에는 Dijkstra가 최악의 BASIC 프로그래머에게 노출 된 것입니다. 제한된 자원 기계에서 BASIC에 경험이있는 사람 만 알 수 있습니다.
Maniero

@bigown : 근데 현대를 정확히 어떻게 생각하세요? 30 년 전의 프로그래밍 언어를 "현대"라고 부르는 것은 흔치 않습니다.

31

남자는 먹고 마시고 자신의 일에서 만족을 찾는 것보다 더 좋은 일을 할 수 없습니다.

나는 다른 것보다 먼저 BASIC을 배웠습니다 (대수를 제외하고는 잘 추측합니다). 그것이 내 마음을 심각하게 뒤 틀리지 않았다면, 나는 그 18 년을 어떻게 설명해야할지 모르겠다 ...

그 말은 무엇입니까? Dijkstra는 BASIC에 장기적으로 노출되어있어 무엇이든 가르치는 데 어려움을 겪을 수도 있지만 , 지하 소나무 상자에 장기적으로 노출되어 있기 때문에 무엇이든 가르치는 데 어려움 을 겪고 있습니다. 그리고 이러한 요소들이 제거 되었음에도 불구하고, 나는 여전히 심각한 CS 학생, 심각한 수학 학생, 또는 다른 학문 분야의 심각한 학생이 아닙니다. 나와 같은 누군가와 Dijkstra 가보고 싶어했던 프로그래머 사이의 심연은 거의 헤아릴 수 없을 정도로 훌륭합니다 ...

그러나 우리는 프로그램을합니다. 우리는 COBOL 및 모든 나머지 실험, FORTRAN 장난 삼아 생각해, BASIC에 치형 사람, 우리는 또한 기쁨과 아마 동안,이 작은 기계와 매력을 발견 전혀 비슷하지 않은 첫 번째 자신의 분야에 씨 Edsger을 그린 것을에서 '아니오'를 평생 사랑의 노동의 기초가되는 부름이 적습니다.

... 혹은 그것이 절단 된 마음 말하는 것입니다.


아주 귀여운! 심각하게 그 의견의 문제
RCProgramming

17

당신을 해치는 것은 기본이 아니며 다른 언어에 자신을 노출시키지 않는 것 입니다. 모노 글 로트 "프로그래머"는 그렇지 않습니다.


1
절대적으로 정확한
RCProgramming

이것이 사실이지만 나는 이것이 ED가 당시에 언급 한 것이라고 생각하지 않습니다
jk.

11

구조적 관점에서 베이직은 어셈블러 나 COBOL보다 나빴습니다. 당시에 우리가 가지고있는 많은 알 골프 언어가 없었습니다. 파스칼은 대부분의 사람들이 합리적인 제어 구조에 대해 처음으로 소개 한 것입니다.

BASIC이 사람들에게 영구적으로 해를 끼치기에 충분하다면 다른 초기 언어들도 있었기 때문에 오늘날 우리가 사용하는 모든 언어를 개발할만큼 사람들에게 해를 끼치 지 않았을 것입니다.

Dijkstra는 그때 좋은 프로그래머가 아니었고 절대로하지 않을 사람들, BASIC에서 어떤 일을하는 법을 배운 사람들을 다룰 수있었습니다. 그것이 제가 진술에 넣을 수있는 가장 자선적인 해석입니다.


어셈블러는 컴퓨터에 공급하는 바이트를 나타냅니다. 당신은 대체 할 수 BASICAssembler다 익스트라의 인용에서,하지만 난 그게 컴퓨터 언어가 아닌 프로그래밍 언어로 간주합니다. +1
but

1
내 이해는 Dijkstra가 여기에서 Basic을 단일 인용하여 간략하게 인용했으며 다른 비 구조적 환경을 포함했을 것입니다.

2
확실히 Dijkstra는 좋은 소리를 얻기 위해 BASIC에 대해 이야기했을 것입니다. 그러나 필자의 요점은 초기 컴퓨터 언어는 확실히 좋지 않았으며 1960 년까지 좋은 프로그래머가 개발할 수 없었으며 이전에 시작한 사람은 영구적으로 손상되었다는 것을 의미한다.
David Thornley

5
여러분이 인용문을 읽은 시간을 읽었다면, 그는 베이식 외에 그 당시의 다른 인기있는 언어를 휴지통에 버렸다는 것을 발견했을 것입니다. 그는 또한 컴퓨터를 의인화하는 경향을 비판했다. 그들은 그것을 싫어합니다.
Huperniketes

2
@Huperniketes : 예. 그러나 Dijkstra는 BASIC과 COBOL에 대해 비정상적으로 역동적이었습니다. 그는 FORTRAN과 PL / I weenies가 치료 될 수 있다는 느낌을 남겼습니다.
David Thornley

6

나는 TRS-80과 Apple II c / e에 대해 BASIC과 함께 배웠으며, 훌륭한 프로그래머라고 생각합니다. 내가 개인적으로 생각하는 두 가지 특성은 먼저 BASIC을 배워도 파괴되지 않았다고 생각합니다.

  1. 적은 노력으로 원하는 것을 성취 할 수있는 더 나은 방법을 계속 찾으려고 노력하면서 다른 언어와 그 언어를 강력하게 만드는 기능을 배우게되었습니다.
  2. 나는 언어로서의 기본 문제, 특히 서브 루틴이 부족하다는 문제에 부딪 쳤고 인식했다.

나는 BASIC의 순수한 절차 후에 객체 지향 프로그래밍을 배우는 것이 한동안 힘들었다는 것을 인정할 것입니다. .


6

Dijkstra에도 동의하지 않습니다. 나는 기본이 아니기 때문에 패러다임 때문에 제 2 언어를 배우기가 더 어렵다.

BASIC은 1985 년에 TK (Sinclair like)라는 개인용 컴퓨터에서 처음 사용하는 언어였습니다. 매우 제한된 리소스 머신이었습니다. 그 당시에는 재미를 위해 16 진 편집기를 사용하여 책에서 BASIC 컴파일러를 작성했습니다. Z80 책을 구입 한 후 8 비트 기계어를 배웠습니다. BASIC은 이것으로 많은 도움이되었습니다.

C와 Pascal을 배우고 8080/6을 위해 Assembly와 함께 연주합니다. MSX-BASIC, MS-DOS 시대의 빠른 기본 ... VB, Delphi, Windows 시대의 일부 Java ...

오늘날 진행중인 작업 (4gl), .net (C # / VB), PHP 및 나는 사이클롭스처럼 느끼지 않습니다. :영형)


5

나는 여덟 살 때 사과 클론을 기초로 시작했습니다.

일부 OOP 아이디어 (qbasic, visual basic 등)가 포함 된 이후 버전의 basic조차도 8에서는 의미가 없었습니다.

초기에 프로그래밍을 시작하는 것이 프로그램 흐름의 문제를 통해 생각할 수있는 이유 중 하나이며 너무 많은 사람들이이 업계에서 잘 할 수없는 방법입니다.

나는 초기 시작이 종종 유익하고 작은 언어를 다룰 때 매우 간단한 언어가 필요하다고 생각합니다.

귀하의 마일리지가 다를 수 있습니다...


4

전 세계 대부분의 기본 사례 에 노출되는 것이 언어 자체가 아니라 프로그래머의 두뇌를 손상시키는 것이라고 생각합니다 . MSDN을 탐색하고 예외 처리가 필요하거나 IDisposable유형을 실제로 폐기 할 필요 가 없다고 생각하는 C # 프로그래머와 같습니다 .


4

현재 언어로 문제를 식별 할 수없고 문제를 해결할 수있을뿐만 아니라 문제를 해결하기 위해 구축 된 다른 언어를 찾으면 누구나 문제가 발생합니다.

그리고 GOTO는 줄 번호가없는 경우에만 나쁩니다.)


예! GOTO는 괜찮습니다. 그것은 악한 라벨입니다 ... mwuuuuhahahaha
Mawg

3

저는 현재 아들에게 간단한 게임을 쓰도록 가르치기 위해 BASIC을 사용하고 있습니다. 나는 그것을 결코 사용하지 않았고, PowerBuilder와 PowerScript로 캐리어를 시작하고 C / C ++로 건너 뛰고 Delphi로 뛰어 들었습니다. 오늘날, 나는 거의 모든 언어를 사용할 수 있으며 모든 언어의 근거가 다른 부호, 연산자 및 기호를 가진 동일한 수학 공식이기 때문에 매우 빠르게 적응합니다. 그것은 또한 제가 아들에게 가르치는 것이므로 C ++ 코드를 이미 읽고 설명 할 수 있습니다. 내 아들은 12btw입니다.


3

베이직 GOTO어셈블리 언어로 사고 하는 방식을 가르치는 좋은 방법 입니다. 그것은 마음을 손상시키지 않으며, 단지 마음을 탄소 기반 시냅스에서 멀어지고 실리콘 기반 트랜지스터에 더 가깝게 만듭니다.

그러나 BASIC과 LOGO를 비교해 봅시다. BASIC은 간단한 재미있는 프로그램을 작성하기 위해 어린 아이들을 프로그래밍에서 멀어지게 만들 수 있습니다. 매일 인쇄 할 수있는 매우 긴 프로그램을 잡지에 계속 인쇄하는 것만으로도 로고를 사용할 수 있습니다. 아이들을 끌어들이는 데 필수적입니다.


때문에 나는이 문장이 답변을 downvoted : 당신이 할 수있는 모든은 계속입니다 복사 입력 잡지에 인쇄 매우, 매우 긴 프로그램 그의 오늘의 단지 스크립트 꼬마 들아. 실제 개발자는 자신의 것을 배우고 작성했습니다.
TecBrat

2

기본은 좋습니다-재미 있고 매우 간단합니다. 재미있는 2D 그래픽을 할 수 있고하지 않을 것입니다 ... 10 살이나 12 살쯤되었을 때 더 배우는 데 관심이있는 재미있는 언어였습니다. 컴퓨터에 대하여 ...


2

내가 아는 최고의 프로그래머 중 일부는 Basic의 프로그래밍에 일찍 노출되었습니다. 좀 더 "콘크리트"하여 저수준 기계가 실제로 많은 새로운 언어보다 어떻게 작동하는지 더 잘 느낄 수 있습니다 (예 : 어셈블러에 대한 HLL 도입에 가깝습니다).

Dijkstra의 인용문은 학계가 스펙으로 설계된 잘 짜여진 체계적인 프로그램으로 경향을 밀고 자하는 시대에서 비롯된 것입니다. 그러나 그것은 대부분의 산업이 진행된 방식이 아닙니다. 대신, 많은 웹 2.0 시대 프로그래머들은 코드에 대해 수학적으로 엄격한 사양이 존재하지 않는 무언가를 신속하게 프로토 타이핑하려고 노력하고 있는데, 그 스펙이 경쟁력을 유지하기에는 너무 빠르게 진화하고 있기 때문입니다.

따라서 Basic에서 프로그래밍하는 것이 때때로 방법론에서 약간 정리 될 때 장려하는 핵 앤 슬래시 시행 착오 프로그래밍 방법은 RAD 사고에 유용한 입문서입니다.

iPad에서 실행할 수있는 기본 통역사가 5 명 이상이므로 최신 장치에서도 언어를 사용할 수 있습니다.


1

나는이 인용문이 35 살이라는 것을 감안할 때, 그것은 프로그래밍 언어에서 이용 가능한 추상화의 부족과, 당신이 말했을 때 잘 발달하기 위해 알아야 할 것이 무엇인지와 많은 관련이 있다고 생각합니다.

BASIC과 같은 언어를 사용하면 과거보다 훨씬 필요한 저수준 프로그래밍 방법에 대해 거의 배우지 못하며 프로그래밍이 실제보다 단순하다는 잘못된 인상을 줄 것입니다.

VZ200, C64 및 Apple을 3 년 이상 지난 후 15 세의 나이에 '머신 코드'를 배우려고 노력했던 것을 기억합니다.

그러나 요즘에는 이러한 것들에 대한 완전한 비난을 받았지만 BASIC을 사용하여 어떤 언어로도 행복하게 일하는 것을 찾지 못할 것입니다 ( 'stupid Fisher Price Language'와 같은 모니터 문구에서 소리 지르기 시작합니다 다시, 부주의 한 중괄호를 거부합니다), 35 년 전 (또는 25 년 전, 내 개인적인 경험과 예에서)보다 CPU의 메커니즘을 추상화하는 언어로 생산적인 일을하는 것이 더 쉽다는 것을 인정합니다


1

전면 패널에있는 8 개의 스위치 세트를 통해 한 번에 한 바이트 씩 어셈블리 코드를 Speer Micro-LINC 컴퓨터에로드하고 1972 년에 PDP 테이프에 저장 한 사람들에게는 Dijkstra가 엄청나게 멍청하다고 주장 할 것입니다. 그가 Basic에 대해 멸시 한 모든 것은 내가 일하고있는 어셈블러에 대한 스페이드에서 사실 이었지만 나 자신과 수천 명의 다른 사람들이 어셈블러에 노출 된 후 나중에 Basic 및 Fortran과 Cobol 및 C 등에서 회복되었습니다.


1

1990 년대 초 GW-BASIC으로 프로그래밍을 시작했습니다. 내 마음은 잘리지 않았다. Pascal, C, C ++, Java, C # 및 Python과 같은 더 나은 언어로 옮겼습니다.

저는 오늘 BASIC 프로그램을 작성할 수 없었습니다. 줄 번호로 생각하는 법을 잊어 버렸습니다. 그건 문제가 아닙니다.

그러나 BASIC 경험은 어셈블리 컴퓨터 (MIPS)를 배워야하는 대학 컴퓨터 아키텍처 과정에서 많은 도움이되었습니다. 어셈블리 언어 제어 흐름은 BASIC의 같은 많은입니다 : 점프 = GOTO, 지점 = IF... GOTO, jal(전화) ... jr(RET) = GOSUB... RETURN. 이것이 필요한 모든 제어 흐름입니다!

초보자 프로그래머가 모두 잘못 할 수 있고 큰 문제없이 프로그램이 실행되는 리소스로 가득 찬 컴퓨터에서 실행되는 프로그래밍 언어를 배우는 것이 좋습니까? 아니면 프로그래머가 잘못 갈 수없는 곳을 배우는 것이 더 낫습니까?

제한된 리소스를 가진 컴퓨터에서 배우는 것이 좋습니다. "프로그래머가 잘못 될 수 없음"이 아니라 "차가움"임계 값이 훨씬 낮기 때문입니다. 초보자 프로그래머는 자신의 PC에 훌륭한 1 인칭 슈팅 게임을 만드는 방법을 모를 수도 있습니다. 그러나 그들은 TI-89를 위해 훌륭한 Pac Man 게임을 작성하고 하드웨어를 최대한 활용했습니다. 그리고 그것은 힘의 느낌입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.