제목 : 멀티 스레드의 특성과 C 에서의 사용법 - 1편이 글을 작성하는 이유는?사실 컴퓨터를 배우는 입장에서 보면, 멀티 스레드라는 개념을 맞닥들일 일이 많지는 않을 것이다.배우는 과정에서도알고리즘자료구조네트워크인프라등등..이를 중점으로 배우게 된다.프로세스와 스레드는 운영체제에서 효율적으로 관리하고,사용자 스레드 단에서도 프레임워크가 굳이 프로세스를 복잡하게 작성하지 않게 도와주며,심지어는 굳이 스레드를 생성하지 않고, Docker or K8s(쿠버네티스) 와 같은"Infra Ochestration"(오케스트레이션) 과 같은 도구들로 단숨에 동일한 프로그램을 복제 할 수 있다.사실상 그 상위인 가벼운 운영체제를 복제한다고 볼 수 있다.물론, 이러한 주제들 또한 단순 프로그래밍 수준이 아니라,각 프로그..
C
제목 : C, 그리고 fgets 라인 입력만으로 입력 토큰화 메서드 제작하기이 글을 작성하는 이유물론, C 에서의 특정 기본 라이브러리나,C++ 의 특정 기본 라이브러리를 가져와서 하나의 문자열을 토큰화 할 수 있다.그러나, 나는 내가 가진 기존의 개발자 역량에서, 엔지니어 역량으로 이끌기 위해 여러 제약을 걸었다.(알고리즘 문제에 제한해서.)stdio.h 라이브러리만 사용한다.동적 메모리 할당 메서드만 extern 키워드로 가져온다.입출력은 모두 fgets fgetc fputs 와 같이, '\0' 을 참조하는 메서드로 해결한다.필요한 모든 유틸리티 메서드와 구조체를 "직접" 작성하여 해결한다.작성한 코드는 헤더 파일로 만들어 재사용하지 않으며, 하나의 문제마다 모두 재작성하여 사용한다.이러한 제약을 ..
제목 : C 프로그램에서 정수, 문자열 상호변환 메서드 만들기이 글을 작성하는 이유C 에서도 문자열을 수로 바꾸는 메서드가 존재한다.이러한 내장 메서드는 어셈블리 급으로 최적화를 해 놓았고,또한 검증되었기 때문에 사용하는 것이 더 정확하고 편하다.그러나, 나는 C 언어로 알고리즘을 푸는 데 있어, 제약을 걸었다.stdio.h 내장 라이브러리를 제외한 모든 유틸리티 메서드를 "직접" 제작하는 것.물론, malloc, free, realloc, calloc 과 같은동적 메모리 할당과 해제에 필요한 메서드는 extern 으로 가져와서 사용한다.나는 이러한 제약을 스스로 걸어서, 각 라이브러리가 "어떻게" 동작하는지 이해하기 위해이러한 제약을 지키고 있다.(물론 어떤 문제들은 까마득하기도 하다.)알고리즘 문제를..
제목 : stdio.h 만 가지고 백준 문제 풀어본 결과코드 결과를 빠르게 보고 싶다면, 밑의 텍스트를 클릭하세요코드로 바로 이동하기다양한 라이브러리가 존재하는데, 굳이 힘들게 푸는 이유는?이러한 힘든 도전을 하는 이유는, "C 와 최소한의 Lib 로 알고리즘 풀어보기 도전" 썼던 글 에 상세히 적어놓았다.요약하자면, Node.js 엔진 기반의 JS 의 성능적 한계점을 느끼고, 최적화를 수행하고 구현하면서,최적화 과정이 저 수준의 언어로 제작하는 것 보다 훨씬 더 어렵다는 것을 느꼈다.이럴 거면 애초에 최적화 타겟 언어로 프로그램을 제작하는 것이 더 낫다는 판단을 했다.그리고, 특히 특정 도메인의 프로그램을 제작하기 위해 다양한 라이브러리의 역할도 알지 못한 채,쉽게 가져와서 사용하기만 해버리는 단순한 ..
제목 : C 와 최소한의 Lib 로 알고리즘 풀어보기 도전이 도전을 하는 계기수많은 언어와 라이브러리들은 매우 간편하다.수많은 언어들은 자체적인 GC(Garbage Collector) 를 갖추고, 특정 언어들은 자체적인 VM 을 갖춰서 실행한다.이 과정에서 우리는 메모리 관리를 딱히 할 필요가 없으며, 수 많은 타입과 데이터셋에 대한 자체적인 라이브러리를 지원한다.간편한 언어의 접근성과, 대중적인 라이브러리의 조합은 "프레임워크" 로 탄생했고, 비즈니스 논리에 집중 할 수 있게 해 주었다.나는 대학교 재학 시절 C 언어를 배우고, Java 언어를 배웠으며, 웹 개발을 위해 JavaScript 를 접하게 되었다.그리고 프로그래머스 풀스택 부트캠프를 통해 JavaScript 로 작성되는 백엔드 개발을 프로젝..