컴퓨터공학과에 입학한 이유는 흥미로운 주제에 대해 문제를 정의하고, 재미있는 아이디어가 떠오르면 그것을 빠르게 구현하고 싶어서이다. 예를 들어, GPT를 이용해 가상의 여자친구를 만들거나, Second Brain, RPA를 생성하는 LLM으로 로봇을 만들기, ABSA로 여자친구의 감정을 분석하는 기기 등 내가 떠올린 대부분의 아이디어를 실현할 수 있는 도구가 AI라고 생각했다. 그래서 2021년부터 AI 분야에 관심을 가지고 공부하기 시작했다.
공부를 하면서 삶에서 놓치고 있는 지식, 아이디어, 계획, 생각들을 한곳에서 중앙 관리하고 싶다는 욕구가 생겼다. 이를 해결하기 위해 Second Brain을 구현하고 싶었다. 중학생 때부터 대단한 사람을 만나거나 인상 깊은 말을 들어도 잊어버리는 것이 고민이었다. 두근거리는 아이디어가 있고, 아무리 좋은 계획을 세워도 어느 순간 망각하여 방향성을 잃은 적이 한두 번이 아니었다.
방향성을 잃지 않기 위해 학창 시절에는 수첩을 들고 다니며, 현재는 카카오톡으로 옮겨 적으면서 기록했지만, 지식을 하나로 재구성하고 분류하는 데 많은 에너지와 시간이 소모되었다. 정리를 하더라도 완벽하게 정리되지 않았고, 자연스럽게 잘 사용하지 않게 되었다. 군입대를 하고 다양한 것들을 하고 싶었지만, 책을 읽고 정리하다 보니 많은 지식을 놓치고 체계화되지 못했다는 것을 느꼈다.
이러한 문제를 해결하기 위해, 나의 생각을 간소화하고 적은 노력으로 시각화할 수 있는 도구를 고민하고 찾았다. 그중에서도 Notion을 활용해 나의 Second Brain을 만들었다. 하지만 Notion은 내부 기능만을 제공하기 때문에 지식과 계획을 시각화하는 데 필요한 도구가 부족하다는 것을 느꼈다.
결론적으로, 나는 나의 지식을 적은 노력으로 기록하고, 시각화가 자동으로 이루어지며, 필요할 때 프롬프트에 입력하면 필요한 정보를 대시보드에 알기 쉽게 보여주는 프로그램을 만들고 싶다. 이를 위해 주요 도메인으로 AI를 선택하고, Python을 사용하기로 했다. 접근법은 뉴럴링크를 통해 아이언맨의 자비스처럼 인공지능이 학습하여 비서처럼 활용할 수 있는 미래적인 생각에서 현재 상황과 기술에 맞춰 나아가는 방식으로 접근하려고 한다.
Python의 저자는 귀도 반 로섬(Guido van Rossum)으로 그는 네덜란드 출신의 프로그래머로, Python 언어의 창시자로 널리 알려져 있다.
Python은 1989년 크리스마스 휴가 동안 귀도 반 로섬에 의해 개발되기 시작했다. 그는 ABC 프로그래밍 언어에서 영감을 받아, 예외 처리가 가능하고, 아마추어 프로그래머도 쉽게 사용할 수 있으며, 무엇보다 읽기 쉽고 이해하기 쉬운 언어를 만들고자 했다. Python은 1991년 2월 0.9.0 버전으로 처음 발표되었으며, 그 목적은 생산성과 가독성을 강조하는 동시에 프로그래머가 짧은 코드로 많은 작업을 할 수 있게 하는 것이었다.
Python은 PEP (Python Enhancement Proposals)라는 과정을 통해 발전해 왔다. PEP는 Python 개선을 위한 설계 문서, 정보 제공 또는 새로운 기능 제안 등을 포함한. Python의 표준화와 발전 방향은 Python 개발자 커뮤니티와 Python 소프트웨어 재단에 의해 결정된다.
파이썬의 향후 발전에서 먼저 귀도 반 로섬과 python 개발 팀원들은 2년전 Microsoft Reactor채널에 나온 인터뷰에서 python 2에서 python 3로 넘어갈 당시 이전 버전에서 3.0으로 넘어갈때 migration하는부분에서 다소 어려운 문제를 겪었기 때문에 python 4에는 회의적인 입장에 있다고 밝혔다.
22년전 인터뷰에서는 thread에 대한 global interpreter loc(GIL) 개선이 고민 되었다고 언급했었고, 이를 해결하기 위해서 multiple sub-interpreter 프로젝트를 진행했다고 밝혔다. 하지만 23년 PEP 703인 "C파이썬에서 GIL을 선택 사항으로 두자" 제안을 승인하는쪽으로 가닥을 잡으면서 GIL을 삭제하여 멀티 스레딩을 가로막는 큰 장애물이 사라지면서 파이썬은 진정한 멀티코어 언어가 되고, 병렬성을 활용하는 워크로드의 성능이 크게 향상되었다. 이는 웹서버, 실시간 데이터 처리, 그래픽 사용자 인터페이스등에서 성능향상을 기대할 수 있으며 python 개발자들은 더욱 복잡한 병렬 프로그래밍 기법을 쉽게 사용할 수 있게 된다.
향후 차세대 파이썬 프로그래밍을 어떻게 형성할지에 대한 Medium의 Mohan의 글에서는 성능향상, 새로운 기능및 구문 개선, 향상된 tool, 더욱 용이해진 커뮤니티 협업을 들었다.
특히 파이썬 성능향상면에서는 Volumetric Optimization으로 메모리 사용량을 최적화하여 메모리 사용 공간을 줄이고, 전반적인 성능을 향상시키는 기능, 병렬 처리에 관해서 multi-threading and multi-core architectures에 더욱 향상된 support를 하여 하드웨어 잠재력을 최대한 활용할 수 있게 한다. 그리고 JIT(Just-In-Time) 컴파일로 python 코드를 동적으로 컴파일 하여 실행속도가 빨라지는 기능을 제안했다. 또한 개선된 tool들은 코드 서식 지정, 디버깅 및 테스트를 위한 새롭고 개선된 도구를 도입하여 개발자가 깔끔하고 유지 관리하기 쉬운 코드를 더 쉽게 작성할 수 있게 된다는 점을 제안했다.
성능향상, 새로운 기능, 개선된 developer experience를 바탕으로 Python 코드를 작성하는데에 혁신을 가져올 것이며 강력한 애플리케이션을 구축할 수 있는 새로운 가능성이 열리는것으로 전망을 보고 있다.
현재 PEP에서는 파이썬의 속도 문제 해결을 위한 다양한 제안들이 활발히 논의되고 있으며, 이는 파이썬의 미래 발전 방향에서 중요한 이슈로 자리잡고 있다. 성능 향상, 새로운 기능 및 개선된 개발자 경험을 바탕으로, 파이썬은 앞으로도 강력한 애플리케이션을 구축할 수 있는 새로운 가능성을 제공할 것이다.
Pandas는 Python 프로그래밍 언어를 위한 고성능, 쉽게 사용할 수 있는 데이터 구조 및 데이터 분석 도구를 제공하는 오픈 소스 라이브러리이다. Wes McKinney에 의해 2008년에 개발되기 시작해, 금융 데이터 분석을 위해 만들어졌지만, 이후 다양한 분야에서 널리 사용되고 있다.
Pandas의 핵심 기능은 다음과 같다:
데이터 조작 및 처리: Pandas는 데이터를 쉽게 조작하고, 정리하고, 분석할 수 있는 다양한 기능을 제공한다. 이에는 데이터 필터링, 정렬, 그룹화, 결합(merge) 및 결합(join) 등이 포함된다.
결측치 처리: Pandas는 결측치를 쉽게 찾아서 처리할 수 있는 기능을 제공한다. 이를 통해 데이터를 정제하고 분석 준비를 할 수 있다.
파일 입출력: Pandas는 CSV, Excel, SQL 데이터베이스, HDF5 형식 등 다양한 파일 형식으로 데이터를 읽고 쓸 수 있는 기능을 제공한다.
5.시계열 데이터 처리: 시간에 따른 데이터 분석을 위해, 시계열 데이터를 쉽게 다룰 수 있는 기능을 제공한다. 이는 주식 시장 데이터 분석과 같은 분야에서 유용하다.
Pandas는 데이터 과학, 금융 분석, 웹 데이터 분석 등 다양한 분야에서 데이터를 효율적으로 처리하고 분석하는 데 필수적인 도구이다. Python과 함께 사용함으로써, 복잡한 데이터 분석 작업을 간편하게 수행할 수 있다.
현재는 강력한 Pandas에 LLM을 결합해 데이터 구조와 분석도구를 자연어를 통해서 처리할 수 있는 pandas AI가 개발되면서 python의 pandas를 활용하여 데이터들의 전처리, 시각화의 접근성이 점점 높아지고 있다. 이애 데이터 애널리스트의 직업군에 데이터 분석가, 데이터 코더가 나눠지는것이 아닌 데이터 분석가 한명이 그때그때마다 자비스처럼 명령을 내려서 필요한 데이터들을 전처리하고, 시각화 하는 시도들을 더욱더 용이하게 할 수 있게 되는 직업적인 변화가 있을것으로 보인다.
pandas AI github: https://github.com/Sinaptik-AI/pandas-ai
link: https://www.indeed.com/viewjob?jk=5656e5565bc39146&tk=1hq2oremlk56s836&from=serp&vjs=3
link: https://www.tesla.com/careers/search/job/python-generalist-tesla-bot-217557
Indeed의 검색결과들을 통해서 실리콘벨리의 주요 기업들은 AI를 다룰 수 있고, 연구할 수 있는 python 개발자 수요가 존재하는 것을 볼수 있다. 또한 검색결과 외에 내가 추가로 내가 하고 싶은 일, 재밌어 보이는 일들을 할 수 있는 실리콘벨리 기업 또한 Python 개발자의 필요성을 볼 수 있다.
이성원 교수님께서 설명해주셨던것처럼, 그리고 팀플, 창업, RAGchain, 아이디어톤, kaggle, Dacon등의 활동들을 해보며, 명세서를 받고 정해진 개발만 하는것이 아닌 Agile의 가치를 가지고 있는 팀원들과 시너지를 내면서 백지부터 시작해서 생각해본것들을 직접 실현시키고, 사업적으로 검증하는 그 일련의 과정이 내가 하고 싶은 게임이었다는걸 느꼈다.
이러한 경험이 쌓이고 쌓여 내가 이전까지는 못했던 능력들을 할 수 있다는것에 흥미를 느끼고 있다. 그리고 상상을 실현시키는 것이 너무나도 재밌다.
phind, github, slack과 같이 풀고 싶은 문제를 정의하고 소규모에서 시작해서 나중에는 수많은 사람들이 쓰는 대중적인 툴이 되는 스토리는 나의 가슴을 웅장하게 만든다.
나 또한 Nerd들과 함께 농담으로 시작해 문제를 정의하고 해결할 수 있는 번쩍이는 재밌는 아이디어를 구현하고자 한다. 혹은 내가 살면서 생각하는 흥미로운 아이디어를 파이썬이라는 도구를 활용해 빠르게 만들어보고 싶다. 하고 싶은 것들을 기반으로 창업이 꼭 아니더라도 취업을 하더라도 새로운것들을 만들 수 있는, 백지부터 만들 수 있는 자아실현이 가능한 회사를 다니고, 만들기 재밌고, 흥미로운 것들을 만들어보고 싶은 욕구가 있다.
나는 프로그래밍 기술을 활용하여 문제를 해결하고, 사업으로 만들 수 있는 프로그래머가 되고 싶다.
출처:
1. language 순위: https://www.tiobe.com/tiobe-index/
2. 실리콘벨리 채용공고: https://kr.indeed.com/
3. Speed comparison of programming languages: https://github.com/niklas-heer/speed-comparison
4. 귀도반로섬 인터뷰: https://www.linuxadictos.com/ko/guido-van-rossum%EC%9D%80-%ED%8C%8C%EC%9D%B4%EC%8D%AC-4-0%EC%9D%B4-%EB%8F%84%EC%B0%A9%ED%95%98%EC%A7%80-%EC%95%8A%EC%9D%84-%EC%88%98-%EC%9E%88%EB%8B%A4%EA%B3%A0-%EB%A7%90%ED%95%A9%EB%8B%88%EB%8B%A4..html
5.GIL삭제: https://discuss.python.org/t/a-steering-council-notice-about-pep-703-making-the-global-interpreter-lock-optional-in-cpython/30474