00:40

아직 살아있음...버그와 씨름중 ㅠㅠ

 

02:00

사업얘기하다보니 게임시간

 

03:00

하품이 계속 나오지만 살아있음

 

05:00

하품이 계속 나오지만 살아있음

드디어 부트캠프 창이 시작되었다. 

공식일정 전부터 매니저분들이 이것저것 많이 챙겨주시고 사전과제도 있어서 많이 배울 수 있었다.

 

아무래도 1주차다보니 서로 알아가는 네트워킹 시간이 좀 있었고 

플러터 강의와 자율학습시간은 은근히 시간이 모자라서 3시간반이 어떻게 지나갔는지도 잘 모르겠다.

 

창업을 진지하게 고민하는 분들이 모인 곳이다보니 많은 인사이트를 얻을 수 있을 것 같고,

좋은 인연이 되면 앞으로 함께할 분을 만날거란 기대도 있다.

 

웹개발은 조금 공부했었지만 앱개발은 플러터가 처음인데 위젯이라는 개념을 가지고

조각조각을 맞춰나가는 느낌이다.

 

HTML, CSS, JS를 하나의 파일 안에서 모두 만드는 느낌이다. 

 

1주차 과제로 간단한 음식 레시피 화면을 만드는 작업을 하였는데 거의 UI부분만 구성하고

로직이 들어간건 반복문정도 였던것 같다.

 

엄청 어렵진 않았지만 그렇다고 쉽지도 않은 적당한 난이도 과제인것 같다.

 

코딩이 아예 처음이라면 매우 어려울지도..(하지만 사전과제 웹개발이 있으니 잘 따라왔다면 문제없지 않을까?)

 

 

Dart는 자바스크립트와 비슷한 면이 있지만 타입 지정같은 부분이나 문법 마지막에 세미콜론을 찍는 점 등 조금 더 까다로운 점이 있는 것 같다. 

 

앞으로 열심히 공부해서 머릿속의 아이디어를 실제로 구현할 수 있도록 해야겠다.

'Weekly I learned (WIL)' 카테고리의 다른 글

스파르타 부트캠프 창 3기를 시작하며  (0) 2022.08.12

자바스크립트에는 값이 없다는 걸 표현할 때, null 과 undefined 두 종류가 있다.

 

이 차이점을 살펴보자면..

null은 의도적으로 '값이 없음'을 표현할 때 사용되고,

undefined는 값이 없다는 걸 나타낸다.

 

무슨 소리인지 잘 모르겠으니 예시를 통해 알아보자.

let abc;
console.log(abc);
// 출력값은 undefined

 위 처럼 변수를 선언 하였으나 아무 값을 할당하지 않았다면 undefined가 출력된다 (왜냐면 값이 비어있으니까).

 

let abc = null;
console.log(abc);
// 출력값은 null

반면, abc라는 변수를 의도적으로 빈 값을 만들고 싶다면 null을 할당하여준다. 그래서 '이 abc 변수는 의도적으로 만든 빈 값을 가진 변수에요' 라는 것을 나타낸다.

 

참고로, null과 undefined를 아래처럼 동등(==)비교와, 일치(===)비교를 할 때 다른 값이 출력된다.

console.log(null == undefined);
// 출력값은 true

console.log(null === undefined);
// 출력값은 false

 

 

 

자바스크립트의 경우 다른 언어와 달리 형변환을 자체적으로 하는 기능이 있다.

파이썬을 먼저 공부하고 자바스크립트를 공부하다보니 헷갈리는 부분이었는데...

 

예를 들면, 파이썬에서 아래와 같은 출력문을 실행하면 서로 자료형이 다르기 때문에 TypeError가 발생한다.

print('1' + 2)

 그러나, 자바스크립트에서 아래와 같은 출력문을 실행하면 문자열 '12'가 출력된다. 자바스크립트가 알아서 자료형을 변환해주기 때문이다.

console.log('1' + 2);

 

어떻게 보면 편리할 수도 있으나 코드가 복잡할 때는 어디가 잘못되었는지 파악하기 어려울 것 같다는 생각도 든다.

 

이러한 이유에서인지 자바스크립트에서 값이 같은지 확인하는 방법은 두가지가 있는데 바로 '동등'과 '일치' 이다.

console.log('1' === 1);
// 출력값은 false

console.log('1' == 1);
// 출력값은 true

===는 양 값이 완전히 일치하는지 비교한다. 위 예시에서 문자열 1과 정수 1은 완벽하게 일치하지 않으므로 출력값은 false가 된다.

 

반면, ==은 양 값이 동등한 관계에 있는지 비교한다. 문자열 1과 정수 1은 동등하다고 보기 때문에 (자바스크립트가 알아서 형변환을 해주기 떄문에..) 출력값은 true가 된다. 

여러 고민끝에 스파르타 코딩에서 진행하는 창 3기에 막바지 합류를 하게되었다.

사전교육에 한 주동안 배운 내용을 블로그에 정리하는 WIL을 추천하기에 지난 세월 묵혀둔 블로그를 다시 시작하기로 결정..(스파르타의 마케팅 전략중 하나라고 생각도 들지만 서로 윈윈이니까 :) 스파르타 응원합니다!)

 

2년전 코딩에 처음 손대며 개설한 블로그 글들을 다시보며 부끄러워 지울까 하다가 예전 글들을 보니 다시 자극도 되고 다시 같은 실수를 반복하지 않기위해 남겨두기로 함. 

 

다시 새로운 마음으로 열심히..!

'Weekly I learned (WIL)' 카테고리의 다른 글

창 1주차 + Flutter 1주차 과제  (0) 2022.08.29

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년정도 된 이 불편한 언어를 아직까지 일부분야에서는 사용하고 있는 것 같다. 물론 많은 장점을 가진 언어이나 나는 컴공 기초를 이해하는 정도까지하고 다른 언어로 갈아타려고 한다 (씨익)   

+ Recent posts