-
Mojo Overview
소개 https://www.modular.com/mojo Mojo는 파이썬의 생태계를 그대로 흡수하면서 C와 비견할 만한 성능과 low-level 기능들까지 갖추는 것을 지향하는 언어입니다. 주로 AI 연구 및 서비스, 데이터 분석 및 처리를 타겟층으로 하여 개발되고 있습니다. Mojo는 Modular라는 기업에서 개발하고 있으며, Co-Founder인 Chris Lattner는 Swift, LLVM, Clang, MLIR를, 또 다른 Co-founder인 Tim Davis는 Tensorflow, Android ML에서 각각 주도적인 역할을 한 것으로 알려져 있습니다. 특히 수십명에 달하는 Modular 팀에 AI Infra, Dev 직군이 무척 많다는 것으로부터 현재 팀의 방향성은 AI 생태계를 개선하는...
-
다양한 언어에서의 async/await
동시성과 병렬성, 멀티쓰레드와 멀티프로세스 무어의 법칙이란 반도체 성능이 24개월마다 2배씩 증가하게 된다는 법칙입니다. 이 법칙은 최근까지 잘 맞아떨어지지만 이제는 한계에 가까워졌다고 합니다. 그래서 최근에는 CPU의 코어 수를 늘리는 추세입니다. 즉, 프로그래머는 CPU의 많은 코어를 모두 활용해야 프로그램이 돌아가는데 많은 이점을 볼 수 있습니다. 그래서 최근에 많은 프로그래밍 언어에서 동시성과 병렬 프로그래밍을 지원하고 있습니다. 병렬 프로그래밍에는 다양한 방법이 있는데, 그 중 오늘은 Async IO, 비동기적 IO에 대해 설명하겠습니다. Async IO란? Async IO의 정의 그럼 Async IO란...
-
Python의 큰 정수 표현법 3 - 기타 연산
이전 글 Python의 큰 정수 표현법 1 Python의 큰 정수 표현법 2 개요 지난 글들에서는 Python의 int가 큰 정수를 표현하기 위해 어떤 구조를 사용하고, 그 값을 C의 기본 자료형이나 문자열로 변환하는 방법이 무엇인지, 오브젝트끼리의 비교를 어떻게 하는지, 사칙연산은 어떻게 적용시키는지 등에 대해 알아보았습니다. 이번 글에서는 한 걸음 더 나아가, 지금까지 다루지 않은 몇 가지 연산들과 기타 기능들에 대해 알아보겠습니다. 단항 연산자 본격적으로 어렵고 복잡한 연산자들에 들어가기 전에, 간단한 단항 연산자들을 몇 가지 살펴봅시다.. 부호 변경...
-
Python의 큰 정수 표현법 2 - 사칙연산
개요 지난 글에 이어, 이번 글에서는 Python의 int가 실제로 여러 가지 연산을 수행하는 방법에 대해 파헤쳐 보겠습니다. 이전에 살펴본 것처럼 Python은 큰 정수를 표현하기 위해 크기를 변화시킬 수 있는 배열을 사용하고, 배열의 각 원소는 4바이트의 크기를 가지며 $0$ 이상 $2^{30}-1$ 이하의 값을 가집니다. $i$번째 원소를 $i$제곱하여 더한 값이 그 int가 나타내는 실제 값이라고 했었습니다. 당연하지만 CPU가 이런 구조에 대한 직접적인 연산을 지원하지 않기 때문에, 간단한 연산, 비교 연산이나 사칙연산조차도 CPU가 계산할 수 있는 단위까지 쪼개어...
-
Python의 큰 정수 표현법 1
개요 대부분의 프로그래밍 언어, 특히 거의 모든 저레벨 언어에는 정수형 크기에 제한이 있습니다. 대체로 바이트 단위로 끊어서 1바이트, 2바이트, 4바이트, 8바이트 정도의 정수형들을 사용할 수 있고, 언어와 컴파일러에 따라서는 16바이트 정수형이 제공되기도 합니다. 이와 같은 제한은 현대 프로세서들의 연산 능력을 고려하여 디자인된 것이라고 할 수 있습니다. 최근까지도 32비트/64비트 프로세서들이 주류를 이루고 있고, 이는 곧 프로세서가 연산을 수행하는 레지스터의 크기가 4/8바이트 정도이며 한 번의 연산 단위가 될 수 있다는 뜻이 됩니다. 따라서 이 크기에 맞추어 자료형을...