Var, Let, Const 차이점

 

Var는 변수가 중복되었을 때 값이 변경될 수 있으므로 사용하지 않는것이 좋겠음. 왠만하면 Const 위주로 사용하고 정말 필요할 때만 let 사용

 

Array (배열, Braket[]을 사용)

//예시 1
const daysOfWeek = ["Mon", "Tue", "Wed", "Thu"];

console.log(daysOfWeek);

//예시 2 (배열 내 특정 순서에 있는 값을 부를 때)
const daysOfWeek = ["Mon", "Tue", "Wed", "Thu"];

console.log(daysOfWeek[2]);

*Camelcase를 통해 띄어쓰기가 필요한 부분은 대문자로 작성할 것

 

Object (배열의 다른방식, Curly braket{}을 사용)

//예시 1
cconst noori = {
    name: "noori",
    age: 10,
    boa: "20 Aug",
    gender: "Female"
};

console.log(noori);

//예시 2 (배열 내 특정 값을 부를 때)
const noori = {
    name: "noori",
    age: 10,
    boa: "20 Aug",
    gender: "Female"
};

console.log(noori.boa);

 

const로 object 값을 지정하였지만 object내의 값은 아래줄에 변수 선언을 통해 값을 변경할 수 있음. (자바스크립트에서만 그런지는 아직 잘 모르겠음)

const noori = {
    name: "noori",
    age: 10,
    boa: "20 Aug",
    gender: "Female"
};

age = 12;

console.log(age);

위와 같이 코드를 작성하면 age는 12가 출력됨

 

Object 내에 Array값을 저장하는 것도 가능함

const noori = {
    name: "noori",
    age: 10,
    boa: "20 Aug",
    gender: "Female",
    more: ["milk", "rice", "meat"],
};

console.log(noori);

컴공 기초 강의를 들은지 1주일 정도 된거 같다. 

 

처음에는 정말 알기쉽게 컴퓨터의 언어라던가 우리가 입력하는 것이 컴퓨터에서 변환되어 읽혀지는지부터 해서 재밌다고 생각했는지 굉장히 빠른 속도로 C언어에 대한 코딩과 함수의 개념에 들어가면서부터 여러번 반복해서 듣지 않고서는 제대로 이해가 되지 않는 상황에 이르렀다. 

 

그럼에도 불구하고 단순히 어렵다고 느끼는게 아니고 흥미롭다고 느꼈던 부분은 어떻게 보면 정말 기초중에 기초라고 할 수 있는 함수들을 가지고 여러 상황을 만들어내고 그걸 해결할 수 있는 수식을 만들 수 있다는게 신기했고 앞으로 배울 수 있는 더 많은 것들을 생각하면 역시 코딩이 가지고 있는 잠재력은 무궁무진하구나 하는 것을 느꼈다 (물론 그런 것들을 코딩으로 실현하기 까지는 엄청난 노력이 필요하다는 것 또한 느꼈다).

 

지금까지 기존에 이미 누군가가 설정해놓은 라이브러리에서 함수를 가져와 활용했다면 직접 함수를 만들어서 사용하는 법도 배우고 어떻게 활용하는지에 대해서도 배웠다. 흥미롭고 재밌는 과정이지만 한편으로는 한 언어에서 이렇게 할 수 있는일이 다양하다면 컴퓨터에 수많은 다른 언어들을 생각했을 때 배워야 할 양이 얼마나 많은지에 대해 압박감이 들기도 한다. 

 

그렇기 때문에 프로그래밍을 공부하는 많은 사람들이 무슨 언어를 공부하고 어떻게 테크트리를 타야 하는지에 대하여 많은 질문을 하는 것 같기도 하다. 사실상 늦은 타이밍에 프로그래밍 공부를 시작한 이상 모든 언어를 마스터 하는 것은 불가능에 가까울 것 같고 여러 언어에서 어정쩡한 지식을 가지고 있는 것 보다 특정 분야를 깊게 파는 것이 중요할 것 같다는 생각이 든다. 개발자는 평생 공부해야 한다는 얘기가 와닿는 하루다.. 

현재 수강하고 있는 David Malan 교수의 하버드 대학교 CS50 강의는 C언어를 기반으로 하여 진행된다. 

 

처음 5강정도는 컴퓨터의 원리부터 어떻게 컴퓨터가 언어를 받아들이고 출력하는지 등의 이론을 배우고 MIT에서 개발한 스크래치를 통해 코딩이 어떻게 적용되는지를 배웠다면 6강부터는 직접 C언어를 타이핑하며 실습과정에 들어간다. 

 

몇몇 강의를 들었지만 항상 코딩의 시작은 Hello, world로 시작하나보다. 파이썬 강의때도 그랬지만 이 CS50강의 역시 가장 먼저 시작하는 것은 Hello, world라는 글자를 출력하는 것이었다. 그런데 여기서부터 C언어가 왜 어렵고 복잡하다고 하는지 왜 파이썬이 배우기 쉬운 언어라고 하는 것이 체감됐다. 

 

hello world라는 글을 출력하기 위해 파이썬에서는 아래와 같이 작성한다. 매우 직관적이며 군더더기가 없다. 

print("hello, world")

 

C언어에서는 hello world라는 글을 출력하기 위해서는 아래와 같이 작성한다.

#include <stdio.h>

int main(void)
{
	printf("hello, world");
}

?????????????????????????

 

이 첫 코드에서부터 약간 멘붕이 왔다. 저 코드에서 중괄호, 세미콜론 등을 빼먹는다면 에러가 나서 출력되지 않는다. 더군다나 hello, world를 출력하기 위해서 파이썬에서는 그냥 실행버튼을 누르기만 하면 출력이 되는 것을 C언어에서는 저 코드 (소스코드)를 컴퓨터가 읽을 수 있는 이진법 숫자 (머신코드)로 변경하는 컴파일링을 한 후 출력이 가능했다. 이 부분은 대학강의에서 기초적인 이해를 위해 일부러 넣은것 같은 느낌이 들기도 하지만 어쨌든 매우 복잡한 것은 사실이다.

 

그런데 이상한 것은 코드는 분명히 더 복잡하고 해괴망측하지만 컴퓨터 동작 원리를 아는데는 분명 더 잘 이해가 되는것 같다. C언어는 컴퓨터 언어와 가까운 낮은 수준의 언어 (low level language)이며 변환과정을 단축시킬 수 있어 메모리는 적게 차지하고 신속한 명령수행이 가능하다고 한다. 그래서 나온지 50년정도 된 이 불편한 언어를 아직까지 일부분야에서는 사용하고 있는 것 같다. 물론 많은 장점을 가진 언어이나 나는 컴공 기초를 이해하는 정도까지하고 다른 언어로 갈아타려고 한다 (씨익)   

코딩을 공부하려고 마음먹은 건 어느 정도 되었지만 실제로 비주얼 스튜디오 코드를 다운받고 내 코드 첫 줄을 작성한 것은 한 달도 채 되지 않은 것 같다. 처음에 무엇부터 시작해야 할지 몰랐기 때문에 사전 공부와 앞으로 계획을 세우는데 많은 시간이 소요되었다는 게 변명이면 변명이겠다.

 

어쨌든 이런저런 과정을 거쳐 온라인 강의를 통해 첫 수업을 듣고 코딩공부를 시작하게 되었다.

시작은 파이썬으로

처음 시작 언어에 대한 여러 고민이 있었으나 파이썬이 프로그래밍 언어중 그나마 쉬운 편이고 AI, 머신러닝, 데이터 분석, 등 다양한 분야에 활용성도 높다고 하여 파이썬에 처음 손을 대게 되었다.  내가 찾은 온라인 강의는 바로 이것. 무료다.

 

유튜브에 공개되어 있는 무료 강의 영상이지만 매우 높은 퀄리티라고 생각하고 제작자님께 깊은 감사를 드린다. 강의를 차근차근 보며 Hello, world를 출력하는 것부터 시작하여 다양한 함수들을 하나하나 따라 하며 약 2시간 정도의 강의를 들었다. 참고로 이 영상은 기본 편으로 총강의는 6시간 정도이며 추가적인 활용편이 두 편 있는데 약 5시간 정도 되는 것 같다. 

 

시청한 강의부분은 2시간 분량이지만 많은 내용을 포함하고 있고 생초보인 내가 모두 이해하고 하나씩 따라서 코딩해보고 하다 보니 실제 소요된 시간은 5-6시간 정도는 된 것 같다. 그렇게 공부하다가 갑자기 현타가 왔다...(작심삼일도 안된다...)

 

며칠간 휴식기를 가지면서 다시 한번 개발공부 방법에 대해 리서치를 하기 시작했다 (실제 코딩 공부한 시간보다 공부방법 알아본 시간이 더 긴 것 같다...). 그러다가 발견한 또 다른 무료 강의. 이번엔 하버드대학교에서 제공하는 컴퓨터공학 기초강의였다. 물론 영어로 강의가 진행되지만 아래 사이트에서는 한글 자막과 자료, 퀴즈 등도 제공된다.

https://www.edwith.org/boostcourse-cs-050

 

[부스트코스] 모두를 위한 컴퓨터 과학 (CS50 2019) 강좌소개 : edwith

- 부스트코스

www.edwith.org

참고로 위 사이트에서는 이 강의뿐 아니라 다양한 대학강의들과 온라인 강의들을 들을 수 있다. 이 모든 게 무료로 제공된다니 세상 참 좋아진 것 같다. 

 

어쨌든 이공계와는 아무런 관계없이 평생을 살았으니 기초가 너무나도 부족하다고 느껴 위 강의를 시청하게 되었다. 결과는 대만족이었다. 강의자체가 코딩을 처음 접하는 학생들을 대상으로 만들어졌다 보니 전구를 켜가며 설명하는 컴퓨터 이진법의 원리부터 전화번호부를 찢어가며 설명하는 알고리즘의 원리 등 매우 흥미로웠다.

 

강의는 기본적으로 C언어를 사용한다. 파이썬으로 시작했다가 (얼마 공부하지도 않았지만..) C언어를 공부하니 사람들이 왜 파이썬이 쉬운 언어라고 하는지 바로 체감할 수 있었다. 다만, C언어를 공부하다보니 파이썬에 있는 함수들이 어떤 부분을 간략화하고 어떤 부분이 실제로 보이지 않는 부분들에서 컴퓨터 내부에서 일어나고 있는지 좀 더 알 수 있게 되었다.

 

중간에 어려운 부분들도 있었으나 앞으로 4-5일 정도면 수업을 다 듣게 되지 않을까 싶다. 그 이후에는 다시 파이썬 강의로 돌아가 파이썬을 본격적으로 공부해볼 예정이다. 그때는 파이썬이 좀 더 친숙하고 쉽게 느껴지지 않을까? 그러길 희망해본다. 그러길 위해서는 좀 더 지금 강의에 정진해야겠다!

'개발공부' 카테고리의 다른 글

자바스크립트 기초 (변수, 배열)  (0) 2020.07.20
프로그래밍은 쉽지 않다  (0) 2020.07.19
C언어 기초에서 멘붕이 오다  (0) 2020.07.17

+ Recent posts