프로그래밍 첫걸음 시작하기 : 프로그래밍 기초 1주차
패스트 캠퍼스의 '프로그래밍 첫걸음 시작하기' 라는 프로그래밍 기초 수업을 듣기 시작하면서
내가 새롭게 알게 되고 깨달았던 것들을 정리 해보려고 한다.
물론 기존에 알고 있던 것들도 정리하면서 내 머릿속에 넣어야 할 것 같다.
chapter1
프로그래밍을 배워야 되는 이유
강의에서는 프로그래밍을 배워야 되는 이유를 4가지 정도로 구분해 놓았다.
-
돈이 된다.
내가 하려는 이유 중 하나 이기도 하다.
많은 회사들이 IT화 되어가고 사람들도 앱이나 웹을 이용하지 않는 사람이 없다.
그런 부분에서 수요가 끊이지 않을 것이라는 생각이 들었고 역시 패스트캠퍼스 강의에서도
그런 부분을 얘기하시면서 수요가 많은것이 좋은점 중 하나라고 말씀하셨다.
또한 회사를 다니면서 외주를 받아 더 많은 돈을 벌 수도 있다.
물론 쉽지 않겠지만 그런 기회나 선택지가 있다는 것 자체가 배워야되는 이유가 될 수 있을 것 같다.
-
의외로 쉽다.
정말 쉽게 생각 노트북과 내 머리만 있다면 소프트웨어를 만들어 팔아서 엄청난 수익을 올릴 수 있다. 프로그래밍 언어도 프레임워크와 라이브러리의 많은 발달로 옛날과는 달리
내가 모든 것을 하지 않아도 개발을 할 수 있는 환경이 만들어져 있다.
또 온라인에서의 지식 공유가 가장 활발한 분야여서 내가 모르는 것이나 어려운 문제를 만났을 때 언제든지 온라인을 통해 공유하고 또 공유 받을 수 있다.
인터넷을 통해 지식을 습득하고 공유한다는 점은 큰 장점 중 하나인 것 같다.
강의에서도 프로그래밍이 많이 쉬워졌고 특정 부류의 전유물이 이제는 아니라는것을 말씀하셨다.
-
써먹을 데가 많다.
컴퓨터, 태블릿, 스마트폰을 사용하지 않는 기업이나 사람은 없다고 말 할 수 있다.
반대로 생각하면 모든 사람들이 쓴다는 말인데 그 디지털 기기를 사용하려면 소프트웨어가
필요하고 소프트웨어가 필요하면 소프트웨어를 만드는 사람인 개발자가 필요하다.
디지털 기기가 적어지진 않을 것이고 그렇다면 개발자는 평생 사는동안 세상에 필요한 사람이 될 수도 있을 것이다.
-
개발자와의 일이 즐거워진다.
이 부분은 나에게는 현재 해당되지는 않지만 나중에 혹시 진로를 수정했을 때 개발자와 일을 하게 되는 상황이 온다면 정말 많은 도움이 될 것 같다. 요즘은 어렸을 때부터 코딩 교육을 하는 부분이 있지만 나 때만 해도 (Latte is horse) 그런 교육이 없었기 때문에 개발자와의 협업이 생긴다면
전문 용어들도 알지 못하고 개발자의 입장에서 생각 해볼수가 없기 때문에 협업에서 차질이 많이
생길 수 있는데 그런 부분에서 패스트캠퍼스의 강의가 기본적인 기초를 갖추는데 도움이 될 것 같다.
프로그래밍 지시하기
컴퓨터는 생각 이상으로 멍청해서 개발을 하는 사람이 하나하나 정확하게 일을 시키지 않으면 에러가 나고 내가 원하는 결과가 나오지 않는다.
식빵 잼 바르기
예를 들어 식빵에 잼을 바른다고 했을 때 사람은 '식빵에 잼을 발라' 라고 해도 잘 바를 수 있을것이다.
그러나 컴퓨터는 식빵을 꺼내고 잼 뚜껑을 열고 식빵 어느쪽에 잼을 바르고 잼이 발라지면 잼 바르는 것을 멈추는 등 모든 행동을 지시해줘야 한다.
큰 숫자 찾기
numbers 라는 이름으로 숫자 5개가 주어진다. 3,1,4,5,2
x는 1이다
y는 numbers의 x번째 숫자다
x가 numbers 내의 숫자를 넘기 전까지 -> for문
numbers의 x번째 숫자가 y보다 크다면 -> if문
y를 numbers의 x번째 숫자로 바꾼다.
x를 1 증가시킨다.
y를 제출한다.
엘리베이터 알고리즘
- 눌려있는 버튼이 없는 상태에서는 엘리베이터는 새로 눌리는 첫 버튼의 층으로 최종 도착지가 결정되고 그에 따라 상승 또는 하강 상태로 바뀜
- 엘리베이터가 이미 있는 층의 버튼은 눌리지 않음
- 엘리베이터가 이동 중일 때 이동방향의 최종지점에 도달하면 다른 눌려 있는 버튼이 하나 이상 있을 시 이동 방향을 바꾸고, 그 방향의 끝점으로 최종 목적지를 변경
- 엘리베이터가 이동 중 버튼이 눌린 층이 있을 때 엘리베이터의 이동 방향이 다르지 않다면 정지
- 엘리베이터가 이동 중일 때 이동방향의 최종 목적지보다 멀리 있는 층의 버튼이 눌리면 최종목적지를 거기로 수정
이런식으로 컴퓨터는 디테일하게 지시를 해줘야하기 때문에 처음에는 익숙하지 않고 어려울 수 있고 문제를 해결하는 과정을 스스로 잘 생각할 수 있어야 하기 때문에 문제 해결 능력이 개발자에게 중요한 능력인 것 같다.
프로그래밍 언어
프로그래밍 언어란 컴퓨터와 사람이 소통할 수 있는 수단이다. 컴퓨터에게 일을 시키는데 컴퓨터 언어가 아닌 사람의 언어로 시킨다면 당연히 이해하지 못하기 때문에 프로그래밍 언어를 이용해 컴퓨터에게 일을 시키는 것이다.
언어의 종류
이름 | 구분 | 난이도 | 레벨 |
---|---|---|---|
High level language | 사람 언어에 가까움 | 낮음 | High level |
Assemble language | 컴퓨터 언어에 가깝지만 가독성을 조금 높임 | 중간 | Low level에 포함 |
machine language | 컴퓨터 언어 | 높음 | Low level |
- C 언어
비교적 하드웨어를 직접적으로 통제하고 기기의 효율성을 끌어올려야 하는 분야에서 많이 사용됨- C#, C++, JAVA
세세하고 복잡한 부분까지 통제하지 않아도 되고 C보다 조금 더 낮은 수준의 컴퓨터 언어를 구사
특히 JAVA는 우리나라에서 웹 제작에 정말 많이 쓰임- python
문법이 한결 수월하고 배우기 쉽다. 머신러닝, 핀테크 등 다양한 분야에서 사용됨- Objective-C , Swift
IOS 기반의 소프트웨어를 만드는데 활발하게 사용- Kotlin
안드로이드 기반의 소프트웨어를 만드는데 사용- JavaScript
앱, 웹등 화면에서 애니메이션 기능을 넣거나 동적인 것을 표현할때 사용
예전에는 브라우저 기반에서만 동작했지만 현재는 Node.js 프레임워크를 통해 컴퓨터에서도 프로그래밍 할 수 있게 됨
프로그래밍 용어
-
클라이언트 & 서버
클라이언트는 사용자쪽,즉 데이터를 제공받는 쪽, 서버는 데이터를 보내는쪽 이라고 생각 할 수 있다.
상대적인 개념이며 서버쪽도 다른 서버에 요청하게 되면 클라이언트쪽이 되는 것이다. -
프론트엔드 & 백엔드
프론트엔드는 눈에 보이는 부분, 백엔드는 눈에 보이지 않는 부분이라고 할 수 있다.
프론트엔드는 클라이언트 부분을 담당하고 디자인이나 시각적인 부분을 담당하고
백엔드는 서버관리나 API를 만드는 서버쪽 일을 담당한다. -
Web standards
모든 브라우저가 화면을 구현하는 방식이나 동작하게 하는 방식이 달라서 개발자들이 여러 브라우저에 맞춰 따로 개발을 해야되는 상황을 최대한 방지하기 위해 웹 표준이라는 것이 개발 되었다. -
호환성 (Compatibility)
-네이티브 앱 = 해당 앱의 모든 기능들을 각 OS 마다 따로따로 제작한 제품들
-> 성능도 빠르고 해당 환경에 최적화 되어있지만 OS를 따로 만들어줘야 하고 업데이트가 늦다.
-웹앱 = 네이티브 앱에서 틀만 만들어주고 그 안의 기능들은 웹사이트로 만드는 것
-> 개발과 운영 측면에서 효율적이지만 성능이 좋아야 하는 작업들은 기능이 떨어진다. -
적응형 웹 & 반응형 웹
적응형 웹은 스크린의 크기를 인식해서 pc라고 판단되면 pc용 화면을 보여주고 모바일이면 모바일 화면을 보여준다.
-> 내용이 많고 컨텐츠의 크기가 많이 달라진다면 적응형 웹이 좋다.
반응형 웹은 스크롤에 따라 화면의 구성을 다르게 하는것이다.
-> 내용이 적고 복잡하지 않다면 배치정도만 바뀌는 반응형 웹이 좋다. -
쿠키, 세션, 캐시
쿠키 = 사용자의 브라우저에 저장되도록 프로그래밍 해놓는 것, 브라우저 단위이다.
세션 = 사용자의 서버에 저장되는 것. 보안이나 결제에 대한 정보를 세션에 저장.
캐시 = 이미지나 용량이 큰 파일을 다운 받아놓은 다음에 재접속할때 빠르게 불러올 수 있게 하는것. -
API (Application Program Interface)
서버와 클라이언트가 서로 통신하기 위해서는 서로 간의 약속이 필요한데 이 약속을 API라 한다.
-> 서로 원할한 통신을 위해 요청을 하고자 하는 페이지에 제대로 요청이 가도록 약속을 해놓아야 한다. -
Debug 디버그(디버깅)
코드에 오타가 있거나 오류가 있을 때 원인을 찾기 위해 코드를 다시 분석하는 것 -
컴파일 언어 / 스크립트 언어
-파이썬이나 자바스크립트는 작성된 코드를 번역해 실행한다.
즉, 코드를 실행했을때 번역을 해서 실행하기 때문에 속도가 느리고 문법적 오류가 있든 없든 실행되기 때문에 디버깅이 어렵다.
-자바나 C계열처럼 무거운 언어들은 코드가 완성된 후에 기계가 읽을 수 있는 기계어로 미리 번역해서 파일을 만들어 놓는다.
그 파일을 읽기 때문에 속도가 빠르고 문법적 오류가 있으면 디버깅이 수월하다. -
빌드
개발자에 컴퓨터에서 최적화되어 최종으로 나오는 결과물
-> 보통은 자동화 되어 돌아가는 작업 -
언어, 프레임워크, 라이브러리
꽤 예외적인 언어가 아니라면 어느정도 공부하면 쉽사리 파악할 수 있다.
하지만 전문적인 수준으로 올라가기엔 시간이 오래 걸릴 수 있기 때문에 전문적인 언어가 아니면 좋은 개발을 하기는 힘들다.
-프레임 워크는 개발을 하기 쉽게 만들어주는 틀 같은 것이다.
하나부터 열까지 개발을 하는것이 아닌 틀을 만들어 놓고 사람들이 쓸 수 있게 만들어 놓은 것이다.
-라이브러리는 특정 기능을 코딩 해 놓은 악세서리 라고 생각할 수 있다. -
호스팅
호스팅 업체에서 서버에서 사용할 서버를 구축해두고 기업들은 호스팅 업체에 일정 금액을 지불하고 서버를 사용하는 서비스이다. -
클라우드 컴퓨팅 시스템
AWS, Azure 등의 클라우드 컴퓨팅 시스템은 일정 공간 혹은 일정 부분만 사용할 수 있고 추가와 제거가 빠르기 때문에 효율적으로 사용할 수도 있다. 비용이 더 비싸긴 하지만 효율적으로 사용한다면 비용을 줄일 수도 있다.
지금까지 1주일 분량의 패스트캠퍼스의 프로그래밍 기초를 정리 해봤는데 분명 모르는 부분도
많지만 지금까지 1달 조금 넘게 공부하면서 많은 부분을 이해하고 습득한 것 같다는 생각이 든다. 강의를 들으며 내가 알고 있는 내용이 나온다는 것에 뿌듯하고 더 공부를 열심히 해야겠다는 동기부여도 되는 것 같다.
5주짜리 강의를 잘 들어서 기초를 잘 다질 수 있는 계기가 되면 좋을 것 같다.
프로그래밍 첫걸음 시작하기 강의 : #패스트캠퍼스 #내일배움카드 #K디지털크레딧 #바이트디그리 #프로그래밍기초
Author And Source
이 문제에 관하여(프로그래밍 첫걸음 시작하기 : 프로그래밍 기초 1주차), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@davidktlee/프로그래밍-첫걸음-시작하기-프로그래밍-기초-1주차저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)