Skip to content
/ io3 Public

새로운 언어에 익숙해지기 위해 3가지 IO 방식을 연습하는 프로젝트

Notifications You must be signed in to change notification settings

wwingyou/io3

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 

Repository files navigation

ɪ🐧🐦🐤

🐧 What is IO3?

IO3는 Standard I/O, File I/O, Network I/O를 기반으로 한 세 가지 프로그램을 완성하여, 새로운 언어에 빠르게 적응하고 자신감을 얻을 수 있도록 고안된 구현 문제집입니다.

🐦 Why IO3?

새로운 프로그래밍 언어를 배울 때 대부분은 웹 문서, 책, 영상등을 통해 언어의 문법을 배우게 됩니다. 변수는 어떻게 선언하고... 조건문은 어떻게 쓰고... 함수는 어떻게 선언하고... 기타 등등. 자! 이제 튜토리얼을 다 끝냈습니다. 튜토리얼이 언어의 모든 문법을 담고 있어서 모든 문법을 습득했다고 합시다. 그 언어 문법의 마스터가 된 셈이죠. 이제 이 언어로 뭐든 만들수 있겠죠?

천만에 말씀. 아마 뭔가를 만드려고 할 때마다 어딘가 턱 가로막힌듯한 느낌이 들겁니다. 왜냐하면 아직 단어를 배우지 않았거든요. 단어없이 문법만 안다고 해서 언어를 유창하게 할 수 있을까요? 절대 그럴수가 없습니다. 왜냐하면 문법이란 '단어를 조합하는 규칙' 이니까요(문법-위키피디아). 물론 인간의 언어에 해당하는 이야기지만, 프로그래밍 언어에서도 비슷합니다. 그리고 프로그래밍 언어에서 단어란 그 언어가 제공하는 여러가지 API(기본 라이브러리, 외부 패키지, 프레임워크 등)입니다. 즉, 미리 정의된 함수, 클래스, 상수등이 프로그래밍 언어의 단어라고 할 수 있을 것입니다.

자, 그럼 단어는 어떻게 공부해야 할까요? 사전을 사서 달달 외워야 할까요? 그럴순 없습니다. 왜냐하면 단어는 너무 많거든요. 그럼 어떻게 할까요? 가장 좋은 것은 필요할 때마다 배우는 것입니다. 뭔가 표현하고 싶은 것이 있어야 말도 할수 있는 법이니까요. 그래서 프로그래밍 언어에 익숙해지는 가장 좋은 방법도 뭔가를 만드는 것입니다. 뭔가를 만드려고 하면 자연스럽게 필요한 라이브러리를 찾아보게 되고, 그렇게 알게된 지식들은 훨씬 기억에도 오래 남을 것입니다. 이렇게 공부하는 것이 사전 첫 페이지를 펴서 'ㄱ'으로 시작하는 단어를 전부 외우는 것보다 훨씬 나은 방법입니다.

하지만, 뭘 만들어야 할까요? 아쉽게도 사람의 아이디어는 한정적입니다. 항상 뭔가 새로운것을 만들어낼 수 있으면 좋겠지만 그러기란 쉽지 않죠. 그리고 뭘 만들어야 할지 떠올리는것 또한 상당히 노력이 필요한 작업입니다.

그래서,IO3라는 프로젝트를 만들었습니다. 프로그래밍 언어를 한번이라도 배워보셨다면 대부분의 튜토리얼에서 표준 출력에 Hello world를 출력하는 프로그램을 작성해본다는걸 아실겁니다. IO3에서는 여기서 '두 발짝' 더 나아가 File I/O, Network I/O를 수행하는 프로그램을 작성해 봅니다.

각각의 문제는 입출력 말고도 JSON 데이터 다루기, HTTP 통신 등 소프트웨어 개발에 필요한 다양한 분야를 다루도록 구성되어 있습니다. 이를 쉽게 구현하기 위해 외부 패키지를 이용한다면 언어의 패키지 관리자에 익숙해질 기회도 얻게 됩니다.

왜 I/O를 다루나요?

소프트웨어란 입력을 받아 결과를 출력하는 거대한 함수라고도 볼 수 있습니다. 그리고 입력과 출력 방식에 따라 소프트웨어의 형태가 달라집니다. Standard I/O를 이용해 입출력을 받는다면 CLI, Network I/O를 통해 입출력을 받는다면 웹 서버(혹은 웹 앱), GUI를 통해 입출력을 받는다면 응용프로그램이 됩니다. 따라서 I/O방식을 잘 익혀두면 앞으로 어떤 프로그램을 개발하던 계속 사용할 수 있는 좋은 토대가 됩니다.

IO3는 튜토리얼이 아닙니다!

IO3는 해결해야 할 문제를 알려줄 뿐 해답을 주지 않습니다. 단계별로 따라할 수 있도록 구성된 튜토리얼과는 다릅니다. 문제를 해결하는 방법을 직접 찾아서 해결해야 합니다.

문제별로 언어의 문법 이외에 알아야 할 배경지식이 있습니다. 만약 배경지식을 모른다면 배경지식을 먼저 공부하고 프로젝트를 진행하세요.

🐤 Problems

아래 링크를 들어가면 각각의 문제에 대한 설명이 나와있습니다. 괄호 안의 🔥 개수는 문제의 난이도를 의미합니다.

About

새로운 언어에 익숙해지기 위해 3가지 IO 방식을 연습하는 프로젝트

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published