, 저를 포함한 우리 중 많은 사람들에 작성된 프로그램과 자신의 프로그래밍 생활을 시작 가정용 컴퓨터 , 같은
10 PRINT "ENTER RADIUS"
20 INPUT R
30 PRINT "CIRCUMFERENCE="; 2 * R * PI
40 PRINT "AGAIN?"
50 INPUT A$
60 IF A$="Y" THEN GOTO 10
70 END
가장 기본적인 방언 구조 문이 좋아 놓친도 있기 때문에 물론, BASIC 기초 라인 수는 니, spagetti 코드를 작성하는 경향이 있었다 WHILE
모든하지만하고, FOR
와 -loop IF
, GOTO
와 GOSUB
. QBASIC과 Visual Basic이 등장한 1991 년 이전의 BASIC 방언에 대해 이야기하고 있습니다.
BASIC 방언은 야심 찬 프로그래머들 사이에서 나쁜 스타일을 촉진했을지 모르지만, 그러한 기본 방언으로 만들어진 더 큰 상업 프로젝트가 있었습니까? 그렇다면 어떻게 명백한 단점을 극복하고 해결할 수 있었습니까?
“심각한”은 다음을 의미합니다.
답변
확실한. Altair / MITS / SWTPC / Kim / Sinclair / Pet / RadioScrap / OSI / Apple 상황이 발생하기 전에 IBM 5100으로 알려진 유쾌한 작은 기계가있었습니다 . ROM 에는 BASIC , 큰 카세트 테이프 드라이브 (또는 2 개), 8KB의 메모리가있었습니다. 24 인치 라인 스크린과 프린터는 모두 미화 10,000 달러로 일반 미니보다 훨씬 저렴합니다. 원래 과학자들을 위해 만들어졌지만 ( ROM의 APL 도 옵션이었습니다), 몇 가지 회계 유형이 그것을 발견하고 열풍을 시작했습니다. 모든 소규모 기업은 하나를 원했습니다. 물론 맞춤형 소프트웨어를 사용하십시오. 5110에 이어 테이프 드라이브는 8 인치 플로피로 교체되었습니다.
상용 소프트웨어가 있습니까? 갤런 .
총계정 원장, 급여, 채무, 채권, 재고 관리 및 송장을 말할 수 있습니까? BASIC에서 그랬습니다. 공공 요금, 신규 및 중고차 재고, 쓰레기 트럭 픽업 및 음료 배달 일정? 예-기본. 광산에서 철로의 철광석 을 추적 하고 열차로가는 열차 를 추적하고 싶습니다 . 기본. 바닥에서 올라가지 않은 모든 것은 BASIC에서 이루어 졌을 것입니다. 상업적인 의미입니다. ( RPG II 는;-를 계산하지 않기 때문에) .
한도를 어떻게 해결 했습니까?
글쎄, 당신이 한 첫 번째 일은 더 많은 메모리를 얻기 위해 고객을 IBM으로 다시 보내는 것이 었습니다. 누가 8KB로 심각한 것을 쓸 수 있습니까? 당신은 간단 했다 가능하면 하나의 테이프에 정렬 자동 장치 옆 이론, 병합이 잘이기 때문에 느리고, 태드 (16)와 두 개의 테이프 드라이브를 가지고.
죄송합니다. BASIC의 한계를 의미했습니다.
글쎄, 줄 번호 와 같은 것을 조심스럽게 관리해야했습니다 . 실수로 한 줄 또는 두 줄의 코드를 잃지 않고 전체 섹션의 번호를 다시 매기고 다시 입력 해야하는 진짜 고통.
아니-농담이야 우리는 실제로 가정용 컴퓨터가 다시 나타날 때까지 그 문제가 없었으며, 기본적으로 번호를 다시 매길 수없는 BASIC 통역사가있었습니다.
또한 새 프로그램을 호출하고 종료 될 때까지 실행 한 다음 호출 프로그램으로 다시 돌아 오는 모듈성을 사용했습니다. 스테로이드에 대한 gosub (사용 할 메모리가 더 많기 때문에), 더 느리게 (기계가 테이프에서 프로그램을 찾아로드하는 데 시간이 걸리기 때문에 원래 프로그램을 되 감고 찾아서로드하십시오. 뒤…). 포크와 exec와 비슷하지만 포크가 없으면 전체 메모리 공간이 공유 되었기 때문에 더 좋습니다 .
당신은 항상이 루틴이 무엇을 말한다 주석 행에서 GOSUB을 대상으로한다 “와 같은 당신이 알고, 가능하면 당신은 GOTO를 위해 동일한 작업을 수행해야한다 물건을 그렇게 아, 그리고 – 규칙의 엄격한 사용도 도움이되었다.. 구조 조금 후에 프로그래밍 -다시 “컨벤션으로”.
일부는 극단적에 조금 갔다 : OAOO , YAGNI , TSTTCPW , 페어링, 리팩터링 물건을 무자비하게 그 종류. 물론 그런 이름으로는 아닙니다. (또한 참조 : 전도서 😉
영광의 날.
답변
내가 작업 한 첫 번째 소프트웨어는 8k 라인 GW-BASIC 프로그램으로 80 년대에 보일러 장비의 크기를 정하고 가격을 책정하기 위해 열 전달 미적분학을 사용하기 위해 썼습니다. 코드는 완전히 이해하기 쉽지 않았지만 20 년 넘게 코드를 사용하여 잘 작동했습니다.
이것이 참조 매뉴얼을 가진 기계 엔지니어가 실제로 사용 가능한 양질의 소프트웨어를 작성할 수있는 BASIC의 강점이었습니다. BASIC과 PC의 보급 이전에는 이런 일이 없었습니다. 공유 메인 프레임에서 프로그래밍하고 작업하려면 컴퓨터 엔지니어 팀과 컴퓨터 운영자 팀을 고용해야합니다. 이 모든 것이 일반적인 기계 엔지니어가 짧은 시간 안에 픽업하기에는 너무 복잡했을 것입니다.
따라서 BASIC은 가정용 컴퓨터 애호가를 뛰어 넘어 매우 유용했습니다. 이것은 많은 기업이 전문가 팀없이 저렴한 가격으로 맞춤형 소프트웨어를 사내에서 작성하는 영역에 처음으로 소개되었습니다.
답변
예, BASIC에는 수많은 상용 제품과 기타 “심각한”개발이있었습니다. 이유를 이해하려면 BASIC이 미니 컴퓨터와 마이크로 컴퓨터에서 성장한 1970 년대와 1980 년대의 상황을 이해해야합니다.
당시 기계는 오늘날의 표준에 의해 긍정적으로 까다로워졌습니다. CPU는 몇 MHz에서 클럭이 났으며 (마이크로 컴퓨터의 경우 훨씬 적음)이 페이지를 렌더링하는 데 필요한 HTML이 차지하는 것보다 메모리가 적었습니다. 제품을 배포하려는 경우 시스템과 함께 ROM (보통 64K 주소 공간에서 16K)으로 제공되는 BASIC 인터프리터 (맨손으로 알몸 어셈블리) 또는 사용 가능한 도구를 사용해야했습니다. . 사용할 수있는 다른 언어가 있었지만 많은 구조적 기능이 당연한 것은 아닙니다. 이것은 메모리가 부족하다는 사실과 많은 관련이있었습니다. * 최첨단 시스템을 제외하고는 가상 시스템이 없었으며,보다 정교한 언어를위한 컴파일러를 보유 할만큼 충분하지 않았습니다. 제한된 자원으로 “심각한”
초기 가정용 컴퓨터 제조업체가 더 잘 알고 있어야하며 구조적 언어를 제공해야한다는 귀하의 주장은 그 상황에서는 효과가 없습니다. 사람들이 위장 할 수있는 가격으로 이용 가능한 기술로는 결코 일어나지 않을 것입니다.
우리가 언어의 단점을 극복하는 방법은 간단했습니다. 우리는 그러한 방식을 보지 못했고 사용 가능한 작업을 수행했습니다. ANSI Minimal BASIC은 간단한 분기 및 서브 루틴 호출의 동일한 풍미를 대부분 얻을 수 있다는 점에서 어셈블리 언어와 매우 유사하게 구성되지만 별이 올바르게 정렬되도록하는 것은 사용자의 몫입니다. 유일한 예외는 FOR..NEXT
루핑을 제공하는 데 사용되는 구조입니다. 기본적으로, BASIC에서 무언가를 개발하고 잘 수행하고 싶다면, 마치 마치 프로그램을 작성하는 것처럼 신중하게 프로그램의 구조를 계획하고 이해해야했습니다. 사용 가능한 디버깅 도구는 매우 원시적이므로 기본적으로 프로그램이 작동하고 유지 관리 가능하도록하려면 함께 행동해야합니다.
예, 당시에는 스파게티가 많이 있었지만 나쁜 코드를 작성하는 것이 불가능한 언어는 아직 보지 못했습니다.
* 메모리는 1980 년대 초 MB 당 약 750-1,000 달러로 실행되었습니다. 인플레이션에 맞게 조정 된 금액은 2010 년 1,600-2,200 달러입니다. 같은 해 메가 바이트 당 비용은 약 0.03 달러였습니다.
답변
1980 년대로 거슬러 올라간 첫 100 % 프로그래밍 작업은 원래 GW-BASIC으로 작성된 수직 시장 회계 패키지 작업을하고있었습니다 . QuickBASIC 3.0 으로 포팅 되었지만 초기 BASIC 방언과 관련된 거의 모든 결함을 유지했습니다. 수많은 GOTO와 많은 열악한 구조가있었습니다. 약 12 개의 모듈 (인벤토리, 원장 등)이 있었고 프로그램은 모듈 당 약 US $ 1000-US $ 2500와 연간 지원 계약으로 판매되었습니다. 회사 매출은 연간 15 ~ 2 천 5 백만 달러였습니다.
단점을 극복하는 방법에 관해서는 기계어 또는 MASM 을 사용하여 많은 한계를 극복했습니다 . PEEK 및 POKE 명령을 사용하여 기계 언어를 BASIC 프로그램에 삽입 하는 것이 일반적이었습니다 . 필자는 기초적인 데이터베이스 지원, 통신 및 텍스트 “그래픽”과 같은 것을 추가하기 위해 프로그램을 확장하기 위해 MASM (및 C) 프로그램을 작성했습니다.
답변
그런 기본 방언으로 더 큰 상업 프로젝트가 만들어 졌습니까?
C64 나 그 이전 모델과 같은 오래된 가정용 컴퓨터에는 많은 BASIC 프로그램과 일부 상용 프로그램이 존재했습니다. 그러나 <64kB의 RAM으로 “대형”기본 프로그램을 작성하는 것은 쉽지 않기 때문에 “대형”은 거의 불가능했습니다. 기계의 한계를 극복하려면 일반적으로 “고급 언어”인 BASIC의 기초를 떠나 어셈블러를 사용해야했습니다.
따라서 귀하의 질문에 대한 답변은 “아마도 많지 않지만”( “너무 오류가 발생하기 쉬운 / 구조화되지 않은”등) 염두에 둔 이유가 아닙니다.
그건 그렇고 : AFAIK 유명한 PETSpeed BASIC 컴파일러는 BASIC으로 작성되었습니다 (물론 자체적으로 컴파일 됨).
답변
Peachtree Software의 전체 회계 라인 (채권, 지불금 등)은 모두 BASIC으로 작성되었습니다. IBM PC가 처음 출시되었을 때 IBM 개인 컴퓨터와 Peachtree 패키지를 구매 한 고객을 위해 코드를 디버깅하고 수정하는 데 많은 시간을 보냈습니다.
답변
저의 첫 번째 일은 1981 년 북 아일랜드 벨파스트에있는 Price Consultinghouse (Pre Coopers) 사무소에서 Basic으로 Apple II를 프로그래밍하는 일이었습니다. 우리 중 2/3 명의 팀이 서점과 도축장을 포함한 클라이언트에서 시스템을 개발하고 설치했습니다. 재무 모델링 시스템으로 사실상 매우 복잡한 Visicalc 스프레드 시트 (50 매, 3,000 개의 변수)가 큰 기본 프로그램으로 바뀌 었습니다. 도축장에서 일주일의 처리량을 처리하기 위해 4 개의 디스크 드라이브가있는 Apple II 시스템에서 2 일 동안 실행했습니다. 매주 2 주씩 걸렸던 수동 시스템보다 약간 빠릅니다.
그런 다음 Act Sirius 시스템으로 이동하여 클라이언트에 설치된 Basic (Microsoft 8KB Basic)으로 프로그래밍합니다.
Basic에는 줄 번호가 있었지만 프로그램 번호를 다시 지정할 수있는 툴킷이있었습니다. Pascal을 배운 Uni에서 신선하면서 가능한 한 구조화 된 스타일로 작성하려고했지만 (Basic에서 가능한 한 많이) Gotos와 Gosubs는 물론 사용되었습니다.
나중에 1983 년 12 월 레인보우에서 프로그래밍하여 CBasic을 사용했습니다.