강력한 안전성과 신뢰성을 자랑하는 Ada 언어로 C 라이브러리를 작성하는 방법에 대해 알아보겠습니다. 특히 C 프로그램에 메인(main) 함수가 있을 때 발생하는 Ada 런타임 초기화 문제를 해결하는 방법까지 포함하여 전체 과정을 단계별로 살펴보겠습니다. 왜 Ada로 C 라이브러리를 만들까요? Ada로 C 라이브러리를 만드는 주된 이유는 Ada의 높은 신뢰성, 안전성, 유지보수성 등의 장점을 활용하여 시스템의 특정 부분을 더 견고하게… 더 보기
Ada 언어의 설계 목표
Ada(에이다)는 프로그램 신뢰성 및 유지보수, 인간 활동으로서의 프로그래밍, 그리고 효율성을 염두에 두고 설계되었습니다. 프로그램 신뢰성 및 유지보수 작성 편의성보다 가독성을 우선시합니다. 예를 들어, 모든 변수를 명시적으로 선언하고 타입을 지정하게 하여, 컴파일러가 타입 관련 오류를 미리 잡아낼 수 있도록 합니다. 또한, 오류를 유발하기 쉬운 모호한 문법이나 표기법을 배제하고, 자연어(영어)와 유사한 구조를 지향합니다. 마지막으로, 개별 단위(파일) 컴파일을… 더 보기
Ada: 실행 파일 만들기
우리가 작성한 Ada 코드를 컴퓨터에서 실행할 수 있는 파일로 만들려면 어떻게 해야 할까요? 지금부터 그 방법을 함께 알아보겠습니다. Ada에서는 독립적으로 실행되는 프로그램의 가장 기본적인 시작점을 프로시저(procedure) 로 만듭니다. 1. 가장 기본적인 실행 파일: 먼저, 아무 작업도 하지 않는 가장 간단한 프로그램을 만들어 봅시다. 이 프로그램을 실행하면 성공적으로 조용히 종료되지만, 운영체제에 ‘성공했다’고 명시적으로 알려주지는 않습니다만 결과적으로… 더 보기
C 프로그램의 시작점: main 함수 완전 정복
프로그래밍의 세계에서 “시작”이라는 단어는 매우 중요합니다. 특히 C 언어로 작성되어 운영체제 위에서 실행되는 프로그램은 main() 함수라는 특정한 진입점에서 실행을 시작하는데요. 오늘은 독립 실행형 C 프로그램에서 main() 함수가 왜 필요하며 어떤 핵심적인 역할을 하는지 깊이 살펴보려고 합니다. 1. main() 함수, 프로그램의 시작점 C 언어의 핵심 원칙 중 하나는 명확한 실행 진입점을 제공하는 것입니다. 운영 체제는 프로그램을… 더 보기
나만의 워드프레스 테마 제작
세상에는 수많은 워드프레스 테마가 있지만, 때로는 내 웹사이트만의 독특한 개성과 기능을 담아내기 위해 직접 테마를 만들고 싶다는 생각을 하게 됩니다. ‘나만의 공간’을 내 손으로 설계하고 구축하는 일은 분명 매력적이죠. 이 글에서는 워드프레스 테마 제작의 가장 첫 단계인 기본 뼈대 구성부터 웹사이트의 필수 요소인 네비게이션 메뉴 구현까지, 그 과정을 정리해보겠습니다. 1단계: 테마의 첫인상 – 기본 뼈대… 더 보기
배열
배열은 Ada에서 또 다른 기본적인 복합 타입(composite types) 계열을 제공합니다. 배열 타입 선언 Ada의 배열은 요소들의 연속적인 모음을 정의하는 데 사용되며, 이 요소들은 인덱싱(indexing)으로 선택될 수 있습니다. 다음은 간단한 예제입니다: 먼저 주목할 점은 우리가 배열의 크기 대신 인덱스 타입(index type)을 명시한다는 것입니다. 여기서 우리는 1부터 5까지의 범위를 갖는 Index라는 이름의 정수 타입을 선언했으므로, 각 배열… 더 보기
Ada: 태스킹 (Tasking)
태스크(Tasks)와 보호 객체(protected objects)는 Ada에서 동시성(concurrency) 구현을 가능하게 합니다. 이어지는 섹션에서 이러한 개념들을 더 자세히 설명합니다. 태스크 (Tasks) 태스크는 메인 애플리케이션과 동시에(concurrently) 실행되는 애플리케이션으로 생각할 수 있습니다. 다른 프로그래밍 언어에서는 태스크를 스레드(thread)라고 부르고, 태스킹을 멀티스레딩(multithreading)이라고 부르기도 합니다. 태스크는 메인 애플리케이션과 동기화될 수도 있지만, 메인 애플리케이션과 완전히 독립적으로 정보를 처리할 수도 있습니다. 여기서는 이것이 어떻게 이루어지는지… 더 보기
Ada: 강력한 타입 언어
Ada는 강력한 타입 언어(strongly typed language)입니다. 그러한 점에서 흥미롭게도 현대적입니다: 강력한 정적 타이핑(strong static typing)은 프로그래밍 언어 설계에서 인기가 높아지고 있는데, 이는 정적 타입 함수형 프로그래밍의 성장, 타이핑(typing) 영역에서의 연구 커뮤니티의 큰 추진력, 그리고 강력한 타입 시스템(strong type systems)을 갖춘 많은 실용적인 언어들의 등장과 같은 요인들 때문입니다. 타입이란 무엇인가? 정적 타입 언어(statically typed languages)에서, 타입(type)은… 더 보기
영혼이 혼미해질 정도로 날 흥분시킨 언어들
누구나 살면서 ‘완전 개미쳤다’ 싶을 정도로 심각히 빠져드는 무언가가 있을 거에요. 프로그래밍의 재미에도 사람이 매우 깊게 빠질 수 있어요. 성취감이 강렬하거든요. 그런데 단순히 코드를 짜는 재미를 넘어, 그 언어가 너무 흥미로와 일상생활이 망가지고 영혼이 혼미해질 정도로 몹시 흥분하고 몰입했던 세월들이 있었죠. 오늘은 저를 그토록 사로잡았던 언어들, 자바, 루비, C, 그리고 현재진행형인 Ada/SPARK에 대한 이야기를 풀어볼까… 더 보기
Ada: 명령형 언어
에이다(Ada)는 객체 지향과 함수형 프로그래밍의 일부 요소를 지원하는 다중 패러다임 언어이지만, 그 핵심은 C나 파스칼(Pascal)과 유사한 단순하고 일관된 절차적/명령형 언어입니다. 다른 언어와의 비교 에이다와 C 같은 언어의 한 가지 중요한 차이점은 문장(statement)과 표현식(expression)이 매우 명확하게 구분된다는 것입니다. 에이다에서는 문장이 필요한 곳에 표현식을 사용하려고 하면 프로그램이 컴파일에 실패합니다. 이 규칙은 ‘표현식은 값을 반환하기 위한 것이지, 부작용(side… 더 보기