Skip to content

Latest commit

 

History

History
106 lines (90 loc) · 7.43 KB

File metadata and controls

106 lines (90 loc) · 7.43 KB

01. 프로그래밍을 시작합시다.

1.1 프로그래밍 언어의 역사

1.1.1 컴퓨터의 시작, 프로그래밍의 시작

  • 최초의 컴퓨터 에니악(ENIAC)
    • 전기배선이 에니악이 계산할 때 사용하는 회로로, 현대의 프로그래밍과 같다.
    • 전기배선작업 : 프로그래밍 이었다 할 수 있다.
    • 프로그래밍을 변경하려면 6,000개에 이르는 배선을 교체해야 한다.
  • 애드박(EDVAC)
    • 에니악에서 천재 과학자 존 포이만(Jhon von Neumann)의 손에 거쳐 개선된 구조와 신뢰성을 갖춤
    • 중앙처리장치, 기억장치, 프로그램, 데이터로 이루어진 현대의 모든 컴퓨터의 조상이 되었다.
  • 에드박 이후 1950년대 전까지는 하드웨어 중심으로 발전하였다.
  • 이 때에도 0과 1로 이루어진 기계어를 조합하여 프로그래밍을 하였다.
  • 전선을 바꿔 끼우는 대신 카드에 구멍을 뚫어 비트를 기록하는 방식으로 바뀐 정도이다.
  • 어셈블리어(Assembly)
    • 0과 1로 이루어진 복잡한 기계어 명령어를 사람이 이해할 수 있는 기호나 단어로 바꿔 만들었다.
  • 컴파일(Compile)
    • 어셈블리어 코드를, 일종의 번역의 과정(컴파일)을 거쳐, 컴퓨터가 이해하는 기계어로 변환한다.
  • 프로그래머가 어셈블리어로 프로그래밈 코드를 작성한 후에는 컴파일러라는 소프트웨어를 이용하여 실행 파일을 만들어낸다.
  • 프로그래밍 언어(Programming Languege) : 어셈블리어처럼 프로그래밍을 작성하기 위해 만들어진 인공 언어체계

컴파일러와 인터프리터

컴파일러는 소스코드를 컴파일 과정을 거친 후 해석해 실행 파일로 만든다. 인터프리터는 소스코드를 실시간으로 기계어로 해석해 실행해준다. 인터프리터 방식의 프로그래밍 언어는 PHP, 파이썬, 루비, 펄(Perl)등이 있다.

1.1.2 포트란의 탄생

  • 1948년 컴퓨터는 트랜지스터의 등장으로 비약적으로 기술 도약을 한다.
  • 또한 수만 개의 트랜지스터를 하나의 칩에 집적한 마니크로 칩이 발명되면서 급속도로 발전하였다.
  • 존 배커스(Hohn Backus)는 IBM에 입사하자마자 어셈블리어의 번역기의 일종인 스피드 코딩 프로젝트에 참여한 후, 1957년 사람의 언어에 가까운 최초의 프로그래밍 언어, **포트란(Fortran)**과 컴파일러를 개발했다.
  • 어셈블리어
Data
var1 DWORD 1
var2 DWORd 5
.code
mov eax, var1
add eax, var2
  • 포트란
a = 5 + 1
  • 이러한 포트란의 성공은 다른 컴퓨터 과학자들을 자극했고, 1천여 가지가 넘는 프로그래밍 언어들이 탄생하고 사라져 갔다.

1.1.3 초등학생도 프로그래밍 할 수 있게 한 베이직

  • 1967년 베이직(BASIC)언어가 미국 다트머스 대학의 존 케머니(John Kemeny)와 토머스 커츠(Thomas Kurtz) 교수에 의해 탄생했다.
  • 누구라도 배워 사용할 수 있는 언어를 고안한 결과가 베이직이다.
  • 빌 게이츠와 폴 앨런도 프로그래밍에 이끌려, 마이크로소프트를 창업하고, 베이직 인터프리터(BASIC Interpreter) 제품을 출시했다.
  • 1990년대에 들어 윈도우 출시했을 때 비주얼 베이직(Visual Basic)으로 새롭게 거듭하였다.
  • 현대도 Visual Basic 2022(Visual Studio 2022)로 많은 사랑을 받고 있다.

1.1.4 유닉스의, 유닉스에 의한, 유닉스를 위한 C

  • 1964년 MIT공대, AT&Td의 벨 연구소, GE는 먹틱스(Multics)라는 운영체제 개발을 시작했다.
  • 멀틱스는 우수한 연구진과 막대한 비용을 투입했지만 실패했다.
  • 이 프로젝터에 참여했던 벨 연구소의 데니스 리치(Dennis Ritchie)와 켄 톰슨(Ken Thompson)은 운영체제 개발이라는 경험을 얻었다.
    • 미니 컴퓨터(냉장고만한) PDP-7d을 활용한 <우주 여행>이라는 게임을 제작
    • 켐 톤슨과 데니스 리치는 유닉스(UNIX)라는 운영체제를 개발했다.
    • 유닉스 PDP-11 버전도 만들었다. 이후 새로운 언어를 만들기로 결심했다.
    • 어셈블리어는 코드 생산성이 너무 낮고 당시 사용하던 B언어(켄 톰슨 제작)은 PDP-11의 새로운 기능을 활용하기 역부족했다.
  • 데니스 리치는 B언어의 특징을 물려받은 ,B언어를 계승한다 하여 C언어가 만들어졌다.
  • C언어를 개발한 뒤, 유닉스를 통채로 C언어로 재작성 했다.
  • 이러한 내용을, AT%T의 벨 연구소는 모든 것을 공개하여 대학과 기업에 공급했다.
  • 유닉스가 많은 사람들에게 활용되어 주류 운영체제가 되었고, C로 만들어진 유닉스도 자연스럽게 프로그래머의 언어로 자리잡았다.

1.1.5 C+1 == C++

  • C++는 AT&T 벨 연구소의 비야네 스트로스트럽(Bjame Stroustrup)교수가 객체지향 프로그래밍(Object Oriented Programming)이 가능하도록 C를 개선시킨 프로그래밍 언어이다.
  • 포토샵, 윈도우, 마이크로소프트 오피스를 비롯한 많은 상용 소프트웨어가 이 언어로 작성되었다.

1.1.6 더 나은 세상을 위한 C#

  • ++ 밑에 ++이 붙으면 #이 된다.
  • C#은 마이크로소프트의 앤더스 헤일스버그(Anders Hejisberg)가 만들었다.
  • C언어로 작성된 소스코드는 C++ 컴파일러가 컴파일 할 수 있지만, C나 C++로 작성된 소스코드는 C#에서 컴파일 되지 않는다.
  • 이름은 다르지만 실제로 완전히 다른 언어이다.
  • 1990년대 말, 마이크로소프트는 .NET 비전을 발표했다. 인터넷 서비스를 위한 플랫폼이다.
    • 비록 많은 투자에 비해 사업적인 면에서는 실패했다.
    • 하지만 .NET 클래스 라이브러리와 C# 프로그래밍 언어라는 큰 선물을 주었다.
  • .NET 클래스 라이브러리 : 콘솔, 데스크톱, 웹, 모바일 등에서 동작하는 애플리케이션을 쉽개 개발할 수 있는 API를 제공 (베이직, 포트란, 코볼, 파이썬, C++, C#등 다양한 언어를 통해 사용할 수 있다.)
  • C# 프로그래밍 언어 : .NET에 최적화된 언어로써, 프로그래머의 생산성을 보다 높은 수준으로 끌어올렸다. C++로도 .NET 클래스 라이브러리를 사용하여 소프트웨어를 작성할 수 있지만, C#을 이용하면 훨씬 수월하게 할 수 있다.
  • C#은 파이썬을 제외하면 어떤 언어보다 배우기가 쉽다.(Java 포함)



1.2 C#의 기본 파일과 환경 설정

1.2.1 프로그램을 이루는 소스 파일과 프로젝트

  • 컴파일로는 소스파일을 입력받아 프로그램, 즉 실행파일을 만든다.
  • C#은 .cs 소스파일을 이요해 실행파일을 만든다.(C컴파일러는 .c를 받고, Java 컴파일러는 .java)
flowchart LR
  A["소스 파일"]-.->B(("컴파일러"))-.->C["실행 파일"]
Loading
  • 비주얼 스튜디오는 복수의 소스 파일과 기타 부속 정보를 함께 묶어 관리하는 '프로젝트(Project)'라는 개념을 도입했다.
  • C# 프로젝트 파일은 확장자가 .csproj이다.
  • 그리고 관련 프로젝트를 여러개 관리할 수 있는 단위인 '솔루션(Solution)'이 존재한다.
  • 솔루션 > C# 프로젝트 > C# 소스 코드

1.2.2 비주얼 스튜디오로 환경 설정

  • C# 프로그래밍을 하기 위해 비주얼 스튜디오를 설치한다. (.NET 데스크톱 개발을 포함하여 설치한다.)