cf.
Assembly Language
- First introduced in 1947
- (almost) one-to-one translation between machine instructions and human-readable keywords
- 기계어와 일대일 대응하여 사람이 좀 더 쉽게 컴퓨터의 행동을 제어할 수 있게 하는 컴퓨터 프로그래밍 언어
- 가장 큰 문제: 프로그램이 어떤 식으로 동작하는지 알 수 없어진다
객체지향 프로그래밍 방법
- 프로그램은 데이터와 알고리즘으로 나누지 않고 하나의 객체로 취급해서 효율적인 일처리 가능
- 프로그래머가 자기가 필요한 데이터 타입을 스스로 만들 수 있게 함
e.g.
축구 게임에서 축구 선수들의 데이터를 다뤄야 할 때:
1) SoccerPlayer라는 데이터를 만든다 → 뭘 저장해야 되지? → 객체 구성: 선수 이름(name), 몇 골 넣었는지(goals), 어시스트 횟수(assists), … 🡆 이런 것들이 다 데이터가 됨
2) 적용해야 하는 Operation: 명령어 입력 → 알고리즘 형성 → 축구 선수가 골을 넣을 때마다 골 수를 더 추가, 어시스트 할 때마다 어시스트 추가 등 🡆 이러한 Operation들을 프로그래머가 정의할 수 있게 해주는 것
class complex_number
float real
float imag
operator +()
operator -()
operator *()
operator /()
class SoccerPlayer
string name
int goals
int assists
add_goals()
add_assists()
…
🡆 이전 프로그래밍 언어 float a1, b1, a2, b2, a3, b3;
에서 사용한 float 대신에 complex_number a, b, c;
complex number라는 데이터 타입이 있고 a, b, c에서 변수 3개 만들고 c=a+b, c=a-b 이런 식으로 조금 더 쉽게 쓸 수 있게 됨
🡆 코딩이란 컴퓨터한테 명령 입력(예: 1+1)하는 건데 컴퓨터 머릿속에는 1과 더하기는 0과 1로 이루어진 굉장히 복잡한 무언가(컴퓨터는 0과 1밖에 모름)라서 컴퓨터와 사람 사이에 중매체가 하나 필요함(통역관이라고 생각하면 됨) → 통역관이 사용하는 언어 == 프로그래밍 언어, 코딩 == 컴퓨터 전문 번역(통역관이 하는 말이 코딩하는 거)
🡆 기계는 대충 말하면 못 알아먹어
→ “Hello, World!” 출력 비교
// Java
package Javatest;
public class HelloWorld{
public static void main(String args[]){
System.out.printIn("Hello, World!")
}
}
// C
#include<studio.h>
void main(){
print("Hello, World!");
return 0;
}
// C++
#include <iostream>
using namespace std;
int main()
{
cout<<"Hello, World!\n";
return 0;
}
# Python
print("Hello, World!")
: 다른 언어에서는 최소 4라인에서 7라인까지 코드가 필요하지만 Python은 한 라인만 있으면 됨 (단, 코드가 간단하다고 반드시 그 언어가 가장 좋은 언어인 건 아니고 언어별로 장단점이 있으므로 필요로 하는 언어를 잘 고를 수 있는 능력을 길러야 함)
→ Python은 다른 언어와 달리 변수를 선언(declare)할 필요도 없고, 변수에 오는 값을 입력할 때 데이터 타입을 미리 지정하는 것도 없음