💾 혼공학습단 12기
챕터 0. 다시 혼공학습단
직장인이라서 방학은 없지만, 마음만은 방학이라고 생각하며... 🫠
방학 기간에 다시 혼공학습단을 지원하여, 공부하게 되었다.
이전에 10기를 지원했었고, 당시에는 <혼자 공부하는 자바>로 진행했다.
이번에는 분명 단어도 알고, 뭔지 알겠는데? 확실히 개념이 잡히지 않는 코딩 관련 지식들에 쌓아 보기 위해!
<혼자 공부하는 얄팍한 코딩 지식> 도서를 신청했다.
사실 이 책은 이전에도 읽은 적이 있는데, 그때는 개정 전의 책이었고!
이번에 개정판으로 진행해보려고 한다.
여기를 가도, 저기를 가도 AI를 빼고는 이제 이야기할 수 없을 것 같은데?
시대에 발맞춰, 이 책도 그 내용들을 담아 개정이 된 것 같다.
작년에도 이 시기에 혼공학습단을 진행했었다!
그때도 여름방학이 있었는데, 이번에도 러키비키 한 여름방학이 있다.
혼공학습단은 총 6주 동안 진행이 된다.
진도를 보며 스스로 학습하기.
이전에 긴가민가하게 알고 있었던 개념들을 확실히 알아가고 싶다.
짧다면 짧고, 길다면 긴 6주 동안 열심히 학습을 하기로 스스로 다짐하며!
혼공학습단 참여를 다시 시작한다! 💛
챕터 1. 개발자 이해하기: 개발과 개발자 용어 알기
01-1 개발자는 대체 뭐하는 사람인가요?
1. 개발자 vs 작가
- 개발자가 하는 일은 작가가 하는 일과 비슷
- 무에서 유를 창조하고, 누군가 이해할 수 있도록 무언가를 작성함
- 개발은 컴퓨터가 이해할 수 있는 언어로, 작가는 사람이 이해할 수 있는 언어로 작성함
개발자 | 작가 |
코딩 | 글 쓰기 |
프로그래밍 | 글 짓기 |
개발 | 책 쓰기 |
2. 웹 개발자
- 웹 사이트를 개발하는 개발자
- 웹사이트는 눈에 보이는 부분과 보이지 않는 부분으로 구성되어 있음
- 웹 퍼블리셔 / UI 개발자
- 웹사이트에서 보이는 부분을 담당하는 개발자 (해외에서는 UI 개발자로 부름)
- 주로 사용하는 언어는 HTML과 CSS이며, 자바스크립트를 사용하기도 함
- 웹사이트의 외적 요소를 코드로 구현하는 역할
- 프론트엔드 개발자
- 화면에 보이는 요소들을 만들 뿐만 아니라, 자바스크립트를 사용하여 그 요소들에 기능을 부여하는 일까지 담당
- 사용자의 클릭이나 드래그와 같은 동작에 따라 다양한 기능이 실행되도록 프로그래밍
- 클라이언트 개발이라고 부르기도 함
- 백엔드 개발자
- 웹사이트에서 눈에 보이지 않는 요소를 개발함
- 서버개발자라고 부르기도 함
- 데이터베이스에 저장되는 각종 정보에 대한 입출력, 데이터 분석과 가공, 로그인을 비롯한 보안 요소 관리 등이 백엔드 개발자를 통해 이뤄짐
- 자바스크립트, 파이썬, PHP, 자바 등
- 풀스택 개발자
- 프론트엔드과 백엔드 관련 지식을 고루 갖추어, 혼자서도 웹 서비스 전체를 개발할 줄 아는 개발자
- 웹 퍼블리셔 / UI 개발자
3. 모바일 개발자
- 스마트폰에서 동작하는 애플리케이션을 개발함
- 앱 개발자로고도 함
- 안드로이드 개발자 & iOS 개발자
- 안드로이드 개발자
- 갤럭시를 비롯한 안드로이드 스마트폰 기반의 모바일 앱 개발
- 자바, 코틀린
- iOS 개발자
- 아이폰과 아이패드용 모바일 앱을 개발함
- 스위프트
- 크로스플랫폼
- 하나의 소스 코드로 양쪽 모두에서 동작하는 앱을 만들 수 있음
- 종류
- 플러터(다트), 리액트 네이티브(자바스크립트), 자마린(C#)
- 안드로이드 개발자
4. 게임 개발자
- 게임의 전체적인 구조를 설계해서 게임이라는 하나의 결과물을 만드는 직군
- 게임 진행을 위한 복잡한 알고리즘부터 물리 엔진 구현, 3D 그래픽 렌더링, 수많은 접속자가 몰리는 서버의 원활한 관리 등 게임의 모든 구성 요소를 다룰 수 있어야 함
- C, C++, C#, 자바스크립트 등
5. 응용 소프트웨어 개발자
- PC용 프로그램을 개발하는 사람을 지칭함
- 워드, 포토샵, 압축 프로그램, 동영상 재생 프로그램 등이 응용 소프트웨어이며, 응용 소프트웨어 개발자가 이를 만들어 냄
- C, JAVA, Python, C++, C#, 스위프트 등
6. 임베디드 개발자
- 정해진 목적게 맞게 설계된 하드웨어의 작동을 프로그래밍하는 직군임
- 임베디드 시스템은 기계 또는 기타 제어가 필요한 시스템을 제어하는 컴퓨터 시스템임. 전자 제품 같은 기기 내부에 내장되어 목적이 맞는 기능을 수행함. (냉장고의 온도 조절기, 스마트 TV, 자동차, 로봇, 항공기 등)
- 하는 일
- 하드웨어 자체 개발
- 이를 작동시킬 소프트웨어 개발
- C, C+, 어셈블리어
- IoT 기기의 운영체제로 리눅스를 많이 사용함. 리눅스 커널을 깊이 있게 공부해 두는 것도 임베디드 개발자를 준비하는 데 큰 도움이 됨
7. 정보 보안 전문가
- 컴퓨터 보안은 홀로 큰 건물 하나를 지키는 것과도 같음
- 사이버 보안, 정보 기술 보안이라고도 하며, 데이터 도난이나 손상을 차단하고 컴퓨터 시스템을 보호하는 역할을 수행함
- 정보 보안 전문가가 되려면 프로그래밍, 네트워크, 컴퓨터 구조, 운영체제 등 컴퓨터 공학 전반에 걸친 지식들이 필요함
8. 인공지능 개발자
인공지능: 인간의 지능을 모방하여 수집한 정보를 기반으로 반복 작업을 수행하는 시스템
- 인공지능 개발은 크게 머신러닝 개발과 딥러닝 개발로 구분할 수 있음
- 인공지능 > 머신러닝 > 딥러닝
- 수학, 통계학, 컴퓨터 공학 등 깊이 있는 지식 요구함
9. 데이터베이스 개발자
- 데이터베이스에 특화된 업무 수행
- 정보를 효과적으로 저장, 조회, 관리할 수 있도록 데이버테이스 설계
- 데이터베이스 관리 시스템(DBMS)에 대한 깊은 이해와 SQL과 같은 데이터베이스 질의 언어에 능숙해야 함. 데이터 구조, 알고리즘, 보안에 대한 지식도 갖춰야 함
10. 클라우드 개발자
- 서버 시스템을 구축하고, 서버가 안정적으로 돌아가도록 유지 보수하며, 사용자 증가, 하드웨어 결함 등 각종 이슈에 대응하려면 고도의 기술적 지식이 필요함
- 요즘은 여러 기업에서 서버에 관련된 다양한 기능들을 제공하여 기술 부담을 줄여주고 있음
- 아마존 AWS, 마이크로소프트 Azure 등을 클라우드 서비스라고 함
- 클라우드 서비스를 적절히 활용하여 자사 서비스를 구축하려면 다양한 지식 필요
11. 데브옵스 개발자
- 데브옵스: 개발과 운영의 전 과정들이 빠르고 안정적으로 진행되도록 관리하는 것
- 기능 추가 및 수정, 오류 해결, 성능 개선 등의 업데이트 작업이 서비스 종료 전까지 계속됨
- 프로그램, 코드 통합, 테스트, 새 버전 출시, 모니터링, 피드백, 긴급 문제 해결 등의 과정
- 데브옵스 개발자는 이 과정들이 빠르고 연속적으로 진행되도록 자동화하고, 시간과 자원의 낭비가 없도록 최적화를 수행함. 또한, 성능 문제나 버그가 신속하게 발견되도록 테스팅 및 모니터링 시스템을 설계하고 모든 기록들을 수집해서 관리함
01-2 코딩과 프로그래밍, 앱과 프로그램
1. 코딩
- 소스 코드: 컴퓨터에 어떤 명령을 내리기 위해 컴퓨터가 이해할 수 있은 언어로 작성한 정보
- 코딩: 소스 코드를 작성하는 작업
- 코더: 컴퓨터가 처리할 수 있는 명령어로 코드(부호)를 작성하는 사람을 지칭함
2. 프로그래밍
- 코딩보다 더 넓은 개념
- 컴퓨터에서 동작하는 프로그램을 설계하고 만드는 전 과정
- 알고리즘: 컴퓨터가 수행할 절차대로 순서도를 구성하는 것
- 프로그래밍: 설계한 것을 프로그래밍 언어로 작성하는 과정을 프로그래밍이라고 하고, 이때 만들어진 결과물이 소스 코드임
3. 개발
코딩이나 프로그래밍보다 더 포괄적인 개념으로 소프트웨어의 기술적 계획부터 제작, 사후 관리까지 모두 포함
- 소프트웨어 개발은 코딩이나 프로그래밍 외에 더 많은 요소가 결합되어 있음
- 요구 사항 분석
- 시스템 명세
- 구조 설계
- 구현
- 테스트
- 유지 보수
4. 소프트웨어 vs 프로그램 vs 애플리케이션
- 라이브러리
- 어떤 일을 수행하기 위해 필요한 기능을 일정 단위로 묶은 것
- 프로그램
- 특정 목적을 위해 실행할 수 있는 대상으로써 주어진 일련의 작업들을 수행하기 위해 프로그래밍됨
- 라이브러리들 중 일부는 프로그램의 구성 요소로 들어가기도 함
- 소프트웨어
- 위 모든 것을 아우르는 게 소프트웨어
- 컴퓨터의 물리적이지 않은 모든 요소를 포함하는 용어
- 애플리케이션
- 응용 프로그램이 바로 애플리케이션임
- 프로그램
- 시스템 프로그램 & 응용 프로그램
- 시스템 프로그램: 운영체제를 구성하는 소프트웨어로써 사용자가 컴퓨터를 원활히 사용할 수 있는 환경 제공
- 응용 프로그램: 각각의 목적에 따라 사용자가 직접 손에 쥐고 실행하여 활용할 수 있는 프로그램 (워드, 포토샵, 게임, 크롬 등)
- 시스템 프로그램 & 응용 프로그램
기본 숙제(필수)
Ch.01(01-1, 01-2) 확인 문제 풀고 인증하기 (p.46~47 & p.56~57)
01-1 확인 문제
1. 다음 중 프론트엔드 개발자가 다루는 언어가 아닌 것은 무엇인가요?
- HTML
- CSS
- 스위프트
- 자바스크립트
- 타입스크립트
2. 다음 중 아래에 해당하는 개발자의 종류를 써 보세요.
- 로봇 청소기의 기기 제어 소프트웨어 개발 ( 임베디드 개발자 )
- 커뮤니티 웹 사이트의 회원 정보를 데이터베이스에 저장하는 과정을 개발 ( 백엔드 개발자 )
- 윈도우용 화면 캡처 프로그램을 개발 ( 응용 프로그램 개발자 )
- 디자이너가 작업한 이미지대로 웹 화면을 개발 ( 프론트엔드 개발자 )
- 아이폰용 사진 꾸미기 앱을 개발 ( iOS 개발자 )
- 운전자의 조작 없이 움직이는 자율주행 자동차 개발 ( 인공지능 개발자 )
3. 다음 용어 중 가장 연관이 깊은 것 끼리 짝지으세요.
- 프론트엔드 개발자 - ㄷ.클라이언트 개발자
- 백엔드 개발자 - ㄱ. 서버 개발
- 모바일 개발자 - ㄴ.앱 개발
4. 다음 문장 중 괄호 안에 알맞은 내용을 써 보세요.
( 크로스 플랫폼 )(을)를 사용하면 하나의 소스 코드로 안드로이드와 iOS 모두에서 동작할 수 있는 앱을 만들 수 있습니다.
5. 다음 중 하드웨어와 가장 밀접한 프로그래밍을 하는 직군은 무엇인가요?
- 웹 개발자
- 모바일 개발자
- 응용 프로그램 개발자
- 임베디드 개발자
- 정보 보안 문가
01-2 확인문제
1. 다음 문장 중 괄호 안에 알맞은 내용을 작성해 보세요.
특정 작업을 수행하기 위한 기능을 일정 단위로 모듈화 한 것을 ( 라이브러리 )(이)라고 합니다.
2. 다음 문장 중 괄호 안에 알맞은 내용을 써 보세요.
프로그램은 운영체제를 구성하는 ( 시스템 ) 프로그램, 그리고 애플리케이션이라고도 불리는 ( 응용 ) 프로그램으로 나눌 수 있습니다.
3. 종이에 적힌 소스 코드를 컴퓨터에 입력하는 작업으로 가장 적합한 단어를 고르세요.
- 코딩
- 프로그래밍
- 개발
- 애플리케이션
- 라이브러리
4. 다음 중 틀린 것을 고르세요.
- 프로그래밍은 코딩을 통해서만 할 수 있는 것이 아닙니다.
- 소프트웨어 완성 이후의 작업들은 개발에 포함되지 않습니다.
- 모바일 앱은 프로그래밍의 일종입니다.
- 개발은 프로그래밍이나 코딩보다 포괄적인 과정입니다.
- 프로그램에는 소스 코드가 포함됩니다.
5. 다음 개발 과정 앞에 순서대로 번호를 작성해 보세요.
- [ 3 ] 구조 설계
- [ 5 ] 테스트
- [ 2 ] 시스템 명세
- [ 4 ] 구현
- [ 6 ] 유지보수
- [ 1 ] 요구 사항 분석
한빛미디어 <혼자 공부하는 얄팍한 코딩 지식> 책 참고
'ETC > LEARN' 카테고리의 다른 글
[혼공얄코] 요청 메소드와 응답코드, 리눅스에 대한 학습 (4주 차) (0) | 2024.07.23 |
---|---|
[혼공얄코] 다양한 IT 용어 학습하기 (3주 차) (0) | 2024.07.16 |
[혼공얄코] 가깝지만 먼 AI에 대해 알아가기 (2주 차) (0) | 2024.07.11 |
SQL 실습 따라하기 01 (0) | 2024.05.06 |
IT 입문자를 위한 전반적인 개념 정리 - 더코딩클럽 (0) | 2024.05.01 |