소프트웨어 개발은 근대에서 소프트웨어 개발에 대한 아이디어와 동의어가되었습니다.
많은 기술을 단일 응용 프로그램에 통합 할 수 있습니다. 상호 연결에 관한 이야기가되었습니다.
시스템. 소프트웨어가 혼자 서 있지 않습니다. 그것은 많은 기술의 번개입니다
단일 응용 프로그램으로 프로그래머는 응용 프로그램을 만들 때 시스템을 기반으로합니다.
다른 사람들이 개발했습니다. 이 개념은 종종 처음 프로그래머가 그리워하기 때문에
이 관계는 종종 프로그래밍 언어 문이나 소프트웨어 내에 캡슐화됩니다
개발 환경. 이 아이디어를 완전히 이해하기 위해 다음 이야기를 살펴 보겠습니다.
프로그래밍의 진화를 현실적으로 묘사합니다.
처음에는 프로그래머가 "처음부터"프로그램을 만들었습니다.
단일 프로그래밍 언어). 이 첫 번째 프로그래머는 원시 도구 만 가지고있었습니다. 그들의 도구
내가 여기서 설명 할 것보다 훨씬 더 원시적 이었지만 보편성으로 충분했다.
간단한 텍스트 편집기, 어셈블러 프로그래밍 언어, 그리고 achine (
오늘날의 현대 컴퓨터). 그들에게는 아무것도 없었습니다. 이러한 단순한 시대에 "진정한"프로그래머
도움없이 스스로 필요한 모든 것을 만들었습니다. 독신을 읽고 싶다면
키보드의 캐릭터인데도이 작업을 수행 할 도구가 없었습니다. 그들은 그것을 스스로 건설해야했습니다.
어셈블러 사용. 이 과정은 그들에게 친밀한 지식이 있어야하므로
필요한 정보를 찾아 추출 할 수 있습니다. 그들은
다음과 같은 것 :
GetChar :
lui $a3, Oxfff f
CkReady :
call
lw $tl, 0($a3 )
andi $ t l, $ t l, Oxl
beqz $ t l, CkReady
lw $v0, 4 ($a3 )
j r $ra
# Load t he base address of memory map
# Read f rom receiver control regi s t er
# Ex t ract ready b i t
# I f 1, then l oad char, else keep loopi ng
# Load c haracter f rom t he keyboard regi s t er
# Re t urn t o p l ace i n program before f unc t ion
위의 어셈블러 함수에서 알 수 있듯이 키보드에서 한 문자를 읽으려면
해당 키보드에 대한 실제 정보를 알고 있어야합니다. 위의 예에서,
키보드가 실제로있는 메모리의 주소 위치를 포함합니다.
연결됨 (일반성을 잃지 않고 논리적 연결이 될 수도 있음). 이 경우 엔
2 개의 하드웨어 레지스터에 액세스 할 필요가 있습니다 : 주소에 Con trol 및 Da ta 레지스터
Oxffffil00O 및 Oxffff0004. 당신은 추가로 그 비트 1을 알아야 할 것입니다.
데이터 레지스터에 데이터가 입력되면 컨트롤 레지스터가 true로 설정됩니다. 확인 됨
바쁜 루프에서 그 사건이 발생할 때까지. 그런 다음 입력 문자를
프로그램.
프로그래머가 현명하다면, 프로그래머는 GetChar 함수를 재사용 할 것입니다. 이제 우리는
단일 문자를 읽는 방법을 알고 있으면보다 새롭고 복잡한 기능을 수행 할 수 있습니다. 우리를 보자.
GETS 함수를 생성하고 get-string으로 GET-S로 읽는다. 이 새로운 함수는 W : apper가 될 것입니다.
기능. GetChar를 사용하는 GETS라는 다른 함수 내에서 GetChar를 래핑합니다.
반복적으로 여러 특수 문자를 입력 할 때까지 여러 문자를 읽는 것,
일련의 문자의 끝을 나타 내기 위해 누를 것입니다. 일련의 캐릭터는
문장이나 단어를 나타내는 채널러 (chractor) 블록으로 반환 될 수 있습니다. 우리는 전화한다.
이것은 문자열입니다. 흔히 큰 따옴표 사이의 단어로 표시됩니다. "나는 문자열입니다."
어셈블러에서도 수행해야하지만 하드웨어 관련 지식은 숨길 수 있습니다.
GetChar 함수 내에서 단일 문자에 액세스하는 방법에 대해 설명합니다. GETS의 작가는
하드웨어에서 단일 문자를 가져 오는 실제 물리적 방법을 알아야합니다.
위는 중요한 발전입니다. 캡슐화라고합니다. 캡슐화는 정보를 사용합니다.
숨어서, 어떤 종류의 str 문 뒤에 숨겨진 정보. 위 단락에서,
GetChar 함수가 숨겨진 구조에서 사용되었습니다. 정보를 숨겼다.
하드웨어에서 문자에 액세스. G etChar의 빌더는 이제 GETS를 만들 수 있습니다.
실제로 물리적 인 방법을 실제로 알 필요없이 문자에 액세스해야하는 다른 기능
하드웨어에서 캐릭터를 얻으십시오.
정보 숨기기, 캡슐화, 함수 및 래퍼 함수는 중요한 개념입니다.
컴퓨터 과학. 그것들은 복잡성을 제어하는 방법입니다. 작문 소프트웨어는 복잡 할 수 있습니다.
사업을 처음부터 모든 것을해야하는 경우 그러나, 나 자신보다 앞서 가고있다. 우리는
나중에이 개념들에 다시 온다.
위의 이야기는 원시 프로그래머가해야하는 모든 것에 해당됩니다. 프로그래머
화면에 글쓰기, 프린터로 인쇄하기, 마우스에 접근하기, 또는 그 밖의 다른 작업을 원할 때
처음부터 새로 건설해야합니다. 이것은 많은 일이 될 것이지만 그것은 될 것입니다.
프로그래머가해야 할 모든 작업, 그리고 그 또는 그녀는이 성취를 자랑스러워 할 것입니다.
프로그래머는 자신의 작업을 과시 할 수도 있습니다. 많은 시간과 노력이 들었지만,
그것은 유용했고, 그럴 가치가있었습니다. 이것이 우리의 원시 프로그래머가 생각한 방법입니다.
많은 시간을 들였기 때문에 그는 옳았을 것이고, 자존심은 정당한 것이었을 것입니다.
감각. 그러나 프로그래머들은 평생 동안 단 하나의 프로그램 만 만들도록 요청받지 않습니다.
원시 프로그래머가 많은 프로그램을 썼기 때문에 잠시 후 그들은 함수가
그들은 한 프로그램의 문제를 해결하기 위해 다른 프로그램에서 다시 등장한 것처럼 보였습니다. 에 대한
예를 들어 GetChar는 프로그래머가 거의 모든 프로그램에서 필요로하는 함수입니다
쓸 수 있습니다.
스마트 프로그래머는 Common.txt 또는 Repository.txt라고하는 특수 텍스트 파일을 만들었습니다.
이 파일에서 그들은 acr oss라는 유용한 모든 기능을 복사하여 붙여 넣습니다. 아이디어
이 파일을 다음 프로그래밍 프로젝트와 병합 할 것입니다. 이 아이디어는
프로그래밍 언어가 특수화 된 명령을 포함하도록 진화 한
프로그램 내의 텍스트 파일을 자동으로 병합합니다. C 프로그래밍 언어에서는
#include 명령을 참조하십시오.
이러한 저장소. txt 파일이 대중화되어 프로그래머가 각자와 공유하기 시작했습니다.
다른. 그런 다음 RepositoryJack.txt와 RepositoryMary.txt를 사용했습니다. 이 연습은 다음으로 발전했습니다.
Repositor yIO와 같은 특수 텍스트 파일이됩니다. txt 및 Repositor yMath. txt. 프로그램 작성
이 정보를 수집하고이를 다른 프로그래머에게 보급하기 위해 커뮤니티를 만들었습니다.
전자식으로, 이것은 Electronic Bulletin Boards, 디스켓 공유 클럽,
특별 창고 회사에서 판매했다 (인터넷은 아직 존재하지 않았다).
프로그래밍은 COBOL, FORTRAN, Basic, C와 같은 고급 언어를 포함하도록 향상되었습니다.
및 파스칼. 이 새로운 프로그래밍 언어는 캡슐화 및 래퍼 기능을 사용했으며,
프로그래머는 더 이상 어셈블러에서 프로그래밍 할 필요가 없었습니다. C 프로그래밍
언어에서는 어셈블러 함수를 호출하는 래퍼 함수 getc () 및 gets ()가 있습니다.
GetChar 및 GETS.
정보 숨기기 기능이 향상되어 프로그래머는
하드웨어에서 정보를 물리적으로 추출하지만,
어셈블러. 이러한 새로운 프로그래밍 언어는 if-statements와 같이 영어가 더 높은 단어를 사용했습니다.
및 for-loops. 문자열 및 배열과 같은 복잡한 데이터 구조를 만들 수 있습니다. 그러나 심지어
더 중요한 발전이 이루어졌습니다 : 도서관의 발전.
FORTRAN, C 및 Pascal과 같은 프로그래밍 언어에는 표준화 된 포괄적 인 라이브러리가있었습니다
Common.txt 및 Repository.txt 파일 프로그래머가 프로그래밍을 구매할 때
언어뿐만 아니라 그들은 그 언어에 대한 컴파일러를 찾고 있었을뿐만 아니라
수백 개의 라이브러리 파일. '이들은 wlite 할 필요가없는 기능이었다. 이들은 기능이었다.
마치 자신의 프로그램에 이들 기능이
언어. 이것은 오늘날 너무 흔해서 오늘날 그들은 언어의 일부로 간주됩니다.
Eve1y 언어에는 자체 라이브러리 세트가있었습니다. 오늘날 .NET 기술에는
여러 언어로 사용될 수있는 라이브러리. 즉, 하나만 배우면됩니다.
라이브러리를 만든 다음 여러 언어로 다시 사용할 수 있습니다. 그러나 이것은 여전히 perl'ect가 아닙니다.
예를 들어, .NET은 Microsoft 제품이며 주로 Microsoft 언어 컴파일러에서 작동합니다.
다른 회사는 여전히 .NET과 같은 독립 라이브러리를 가지고 있습니다. 실제로 볼랜드였습니다.
.NET과 같은 추세를 시작했습니다. 그러나 희망이있을 수 있습니다. 경쟁 컴파일러 때때로
프로그래머가 경쟁 업체 사서를 사용할 수있게합니다. 그래서, 미래에, 우리는 단지 배울 필요가 있습니다.
모든 언어에 대한 약 1 개의 공통 라이브러리.
소프트웨어 개발의 다음 단계는 프로그래밍 언어 자체에서 진행되었습니다. 그들 절차 적 및 기능적 텍스트 기반 사용자 인터페이스 언어에서 객체 지향, 이벤트 중심의 그래픽 기반 사용자 인터페이스 언어 컴파일 된 언어에서, 컴퓨터에서 컴파일 할 수있는 컴퓨터에서만 실행할 수 있습니다. Java 및 Python과 같이 독립적입니다. 이 책은 독자 중 많은 이들에게 소개하려고 시도합니다. 널리 사용되는 컴퓨터 의존 언어 및 컴퓨터 독립적 언어. 지금까지 우리는 라이브러리에 제출 된 어셈블러가 함수로 변환 된 것을 보았습니다. 우리 그 다음에 언어에 포함 된 라이브러리가 더 강력하고 강력한 언어를 보았습니다. 마지막으로, 언어 자체가 더욱 정교 해졌습니다. 그러나 더 많은 발전 코닝이었다.
원시 프로그래머는 코드를 작성하는 텍스트 편집기와 변환 할 컴파일러 만 가지고있었습니다. 코드를 기계의 내부 언어 (적절하게 기계 언어라고 함)로 변환합니다. 이것은 좋았지 만, 1980 년대에 통합 개발 환경이 생겨났습니다. 이들 프로그래밍 환경은 프로그래머가 단일 프로그램. 프로그래머는 텍스트 편집기 에서처럼 코드를 작성할 수 있습니다. 그들은 또한 컴파일 할 수있다. 그들의 코드를 읽고 텍스트 에디터와 같은 것을 떠나지 않아도 화면에 표시됩니다. 프로그램. 동일한 프로그램에서 오류를 추적하고 디버깅 할 수 있습니다. 심지어 Screen Generators 및 Report Generators라고하는 도구를 자동으로 생성하는 그들. 이 프로그램은 화면과 형식화 된 보고서를 작성한 후 다음과 같이 프로그램을 작성했습니다. 잘. 오늘날 많은 강력한 개발 환경이 존재합니다 : Eclipse, Code :: Blocks, Microsoft 시각적 환경, Borland Builder 환경 등이 있습니다. 그러나 사태는 계속 진전되었습니다. 프로그래밍 언어와 개발뿐만 아니라 환경이 더욱 정교 해지지만 이러한 프로그램이 실행되는 운영 체제 또한 변경되었습니다. 또한 네트워크는 이제 평범하고 인터넷은 어디 에나 있습니다. 이제 우리의 프로그램은 터치 스크린, 스타일러스, 마우스 및 기타 많은 것들과 상호 작용해야합니다. 프로그램이 단순 할 때가 오랜 시간을 지났습니다.
그러나 이것이 프로그래밍이 어려워진다는 것을 의미하지는 않습니다. 현실은 그 반대입니다.
프로그래머는이 현대 시대의 세 가지 중요한 시스템을 이해해야합니다. 인터넷,
런타임 환경 및 소프트웨어 개발 환경을 제공합니다. 다음 두 섹션
인터넷과 런타임 환경의 두 가지 시스템을 소개합니다. 우리는 볼 것이다.
다른 장의 개발 환경에서.