GN⁺: Awk에서 구현된 Git, Aho
(github.com/djanderson)-
AWK로 구현한 AhoA Git
- AWK는 단순한 한 줄짜리 스크립트 이상의 기능을 할 수 있음.
- 이 프로젝트는 Git의 내부 작동 원리와 GNU AWK의 새로운 기능을 탐구하기 위한 장난감 프로젝트임.
- 오락 및 교육 목적 외에는 유용하지 않을 것으로 의도됨.
-
시작하기
-
gawk
버전 5.0 이상이 필요하며,pigz
를 zlib 압축에 사용함. - GNU coreutils가 제공하는 나머지 기능들을 사용함.
- 대부분의 리눅스 시스템에서 실행 가능하지만, BSD나 Mac에서는 그렇지 않음.
- 초기화, 파일 추가, 파일 구조 확인 등의 명령어 사용 예시가 제공됨.
-
-
기여하기
- AWK나 Git에 대한 지식 향상에 도움이 되는 모든 입력을 환영함.
-
할 일 목록
-
init
,add/rm
,status
,commit
,reset
,branch
,switch
,config (읽기 전용)
,ls-files
,cat-file
등의 기능 구현 예정. - 네트워크 기능은 추가할 계획이 없으므로
clone
이나push
기능은 없음.
-
GN⁺의 의견
- 이 프로젝트는 기술적 호기심을 가진 사람들에게 Git과 AWK의 작동 원리를 재미있게 탐구할 수 있는 기회를 제공함.
- 프로그래밍 언어의 새로운 가능성을 탐색하고자 하는 초급 소프트웨어 엔지니어에게 흥미로운 실험적 프로젝트임.
- AWK와 Git에 대한 이해를 심화시키고자 하는 사람들에게 유익한 교육적 자료가 될 수 있음.
Hacker News 의견
-
Awk의 매력:
- Awk은 유닉스 계열 시스템에서 흔히 볼 수 있는 강력한 프로그래밍 언어임.
- 주로 파이프된 표준 출력(stdout)에서 텍스트 조각을 추출하는 데 사용되는 한 줄짜리 명령어로 쓰임.
- Awk을 일반적인 스크립팅 언어로 사용할 수 있으며, bash보다 더 나은 면이 많음.
- Perl이 나오면서 shell, awk, sed의 좋은 기능을 결합하려 했지만, 결국 Perl에 대한 부정적인 인식으로 인해 사람들이 다른 언어로 이동함.
-
The AWK Programming Language, Second Edition:
- AWK 프로그래밍 언어의 두 번째 판이 2023년 9월에 출시됨.
- 첫 번째 판은 1988년에 출판되었으며, 온라인에서 접근 가능함.
- 관련 토론 링크 제공.
-
Awk 코드 개선 제안:
- 함수의 매개변수와 로컬 변수를 구분하기 위해 GNU Awk에
let
문을 추가하는 패치를 제안했으나, 프로젝트에서 거절됨. - 대신 GNU Awk의 이름을 바꾼 포크(fork) 버전을 만들도록 권장받음.
- 함수의 매개변수와 로컬 변수를 구분하기 위해 GNU Awk에
-
Awk의 유용성:
- 리눅스 명령줄이 최고의 개발 환경이라고 주장할 때, Awk는 종종 그 이유 중 하나로 꼽힘.
- Awk의 기본만 알아도 많은 작업을 수행할 수 있으며, IDE가 비효율적으로 느껴질 수 있음.
- Awk를 배우고자 하는 사람들을 위해 Linux Fest Northwest에서 강연을 하고 YouTube에 녹화본을 올림.
-
Awk를 이용한 프로젝트 경험:
- 매우 제한된 메모리를 가진 라우터에서 Awk를 사용해 웹 기반 위키를 만든 경험이 있음.
- 라이브러리에 의존할 수 없어 기본적인 것들을 직접 구현하면서 위키 작동 방식과 Awk의 가능성에 대해 배움.
-
Awk의 확장성:
- Awk에 네트워크 기능을 추가할 계획은 없지만, 다른 디렉토리에 있는 저장소로부터 git clone이나 push가 가능함.
-
GNU 유틸리티의 잠재력:
- GNU 유틸리티와 프로그램만으로도 성능과 기능 면에서 전문화된 도구들을 능가하는 데이터베이스와 처리 도구를 만들 수 있을 것 같은 생각이 듦.
-
cppawk의 활용:
- cppawk를 사용하면
#include
를 사용할 수 있으며, AWKPATH 없이 파일에 상대적임. - cppawk가 없던 시절에 개발된 프로젝트에 적용하면, 전처리된 프로그램을 단일 파일로 "빌드"할 수 있음.
- cppawk를 사용하면
-
Awk의 다양한 활용 예:
- sed-chess와 awk-raycaster와 같은 프로젝트가 Awk의 다양한 활용 가능성을 보여줌.
-
Awk와 관련된 재미있는 사실:
- "Aho"는 일본어로 바보를 의미하는 단어임.