[Language] Ruby(루비)
[1] Ruby의 창시자
일본의 프로그래머인 유키히로 마츠모토(Yukihiro Matsumoto)가 개발한 객체 지향 스크립트 프로그래밍 언어 입니다.
[2] Ruby의 탄생
Ruby는 1995년에 최초 버전을 발표하였습니다.
[3] Ruby의 역사
일본에서 만들어졌습니다.
Ruby는 2000년대 초반에는 Ruby on Rails 프레임워크가 등장하면서 일본을 넘어서 유럽과 미국 등 세계적으로 인기가 증가하였습니다.
2006년 12월부터 처음으로 TIOBE Index에 상위 10위 안에 들어가게 되었고, 이후 2008년 2월에는 8위까지 올랐습니다.
연도 버전 주요 릴리즈 내용 1995 0.95 최초 릴리즈 1996 1.0 최초의 공식 버전 1998 1.2 GC(Garbage Collection) 도입 2000 1.6 Singleton Method Cache 도입 2003 1.8 전면 개편, Rite 개발 시작 2007 1.9 YARV 가상머신 도입, 인코딩 관련 개선 2010 1.9.2 1.9 시리즈 최초 안정 버전 2011 1.9.3 1.9 시리즈 최종 안정 버전 2013 2.0 RGenGC 도입, 심볼 가비지 콜렉션 개선 2015 2.2 인터프리터 최적화 개선 2016 2.3 AOT 컴파일 도입 2017 2.4 성능 개선, 랜덤 정렬 알고리즘 개선 2018 2.5 yield_self, Hash#slice, Hash#transform_keys 등의 새로운 기능 추가 2019 2.6 JIT(Just-In-Time) 컴파일러 도입 2020 2.7 더 엄격한 비동기 예외 처리, pattern matching 등의 새로운 기능 추가 2021 3.0 Ractor, Fiber Scheduler, 정적 타이핑 도입 등의 새로운 기능 추가
💡아래는 2023년 기준 [TIOBE Index] 통계 자료입니다.
[4] Ruby란?
Ruby는 인터프리터 형식으로 실행되는 고기능 스크립트 언어이자 객체 지향 프로그래밍 언어입니다.
간결하고 직관적인 문법, 다양한 기능 및 라이브러리, 그리고 문제 해결에 대한 직관적인 접근 방식으로 인기를 얻고 있습니다.
- 💡알고가기
- 🔹인터프리터란?
고급 언어로 작성된 원시코드 명령어들을 한번에 한 줄씩 읽어들여서 실행하는 프로그램입니다.
컴파일러와 다르게 컴파일 단계를 거치지 않는데에 장점이 있지만, 느리다는 단점이 있습니다.
[5] Ruby의 활용
Ruby는 웹 프로그래밍, 게임 개발, 자동화, 데이터 분석 등 다양한 분야에서 사용됩니다.
특히 Ruby on Rails 프레임워크는 웹 애플리케이션 개발에서 많이 사용되고 있습니다.
- 💡알고가기
- 🔹Ruby on Rails란?
Ruby로 개발된 MVC(Model-View-Controller) 아키텍처를 기반으로 한 오픈소스 웹 프레임워크입니다.
CRUD(Create, Read, Update, Delete) 기능과 같은 기본적인 기능을 지원하며, 빠른 개발을 위해 다양한 라이브러리와 기능을 제공하며
특징으로서는 CoC(Convention over Configuration), DRY(Don`t Repeat Yourself), MVC 패턴이 있습니다.
Ruby에서 Ruby on Rails는 중요한 부분이지만 본 포스팅은 Ruby를 알기위해 작성하였기에 추가적인 설명은 기재하지 않겠습니다.
[6] Ruby를 사용하는 이유
Ruby는 코드의 가독성이 뛰어나고, 생산성이 높으며, 유지보수가 용이하다는 장점이 있습니다.
또한, Ruby on Rails 프레임워크를 비롯한 다양한 라이브러리와 도구들이 존재하여 개발 생산성을 높일 수 있습니다.
이러한 이유로 Ruby는 현재 많은 개발자들에게 인기 있는 언어 중 하나입니다.
아래는 특징, 장점, 이슈를 목록화한 내용입니다.
[6.1] 특징
-
- 객체 지향 언어
- 모든 것이 객체입니다. 즉, 순수 객체 지향으로서 변수나 함수 등 모든 요소를 객체로 다룹니다.
- 객체 지향 언어
- 간결하고 읽기 쉬운 문법
-
- 동적 타이핑 언어(Dynamic Typing)
- 변수의 자료형을 명시하지 않아도 됩니다.
-
- 메타 프로그래밍(Meta Programming)
- 런타임 시에도 코드를 조작할 수 있습니다.
-
- 함수형 프로그래밍(Funcional Programming)
- 코드의 안정성을 높이고 복잡도를 줄일 수 있습니다.
- 💡알고가기
- 🔹순수 객체 지향이란?
순수 객체 지향적 언어는 원시 자료형이 사실상 존재하지 않고 모든 것은 객체인 언어
🔹동적 타이핑이란?
변수 선언시 자료형을 명시하지 않아도 됩니다.
int a = 15; <!--정상--> b = 15; <!--정상, 컴퓨터가 알아서 문자열로 해석-->
🔹메타 프로그래밍이란?
자기 자신 혹은 다른 컴퓨터 프로그램을 데이터로 처리함으로써 프로그램을 조작하는 프로그램을 작성하는 것입니다.
🔹함수형 프로그래밍란?
대입문이 없는 프로그래밍이며, 작은 문제를 해결하기 위한 함수를 작성하는 것입니다.
대표적으로는 map, filter, reduce 등이 있습니다.<!--잘못된 예시--> var arr = [1, 2, 3, 4, 5]; var condition = function(x) { return x % 2 === 0; } var ex = function(array) { return array.filter(condition); }; ex(arr); // [2, 4] <!--올바른 예시--> var ex = function(array, cond) { return array.filter(cond); }; ex(arr, condition);
[6.2] 장점
-
- 생산성이 높음
- 간결한 문법, 동적 타이핑, 객체 지향적인 설계 등으로 빠른 개발 가능합니다.
-
- 유연성이 높음
- 동적 타이핑, 믹스인 등으로 코드 수정이 쉽습니다.
-
- 다양한 분야 활용
- 웹 개발, 데이터 분석, 인공지능 등의 다양한 분야에서 활용 가능합니다.
[6.3] 이슈
-
- 성능 문제
- C나 Java와 같은 타컴파일 언어보다 느릴 수 있습니다.
-
- 메모리 관리
- 가비지 컬렉션으로 메모리 관리를 하기 때문에 일정 부분의 성능 저하 가능성이 있습니다.
-
- 문서화 부족
- 공식 문서화가 미흡한 편이라, 사용자들이 다른 자료를 참고해야 하는 경우가 많습니다.
끄적끄적
GitHub를 처음 접했을 때 Rails(=Ruby on Rails) 프레임워크로 로 개발이 됐다는 정보를 알게되어,
사용하는 언어는 아니지만 궁금증을 해소하려 본 포스팅을 작성하게 되었습니다.
이번에 정리를 하면서 알게 된 바로는, Rails는 현존하는 풀스택 웹 프레임워크들에게 많은 영향을 끼쳤다고 합니다.
웹 개발자라면 한번쯤 들어보고 경험해봤던 Spring MVC도 Ralis MVC를 모방했다고 하며,
Spring Boot는 Ralis에서 사용되는 CoC의 개념을 Java 개발에 적용했다고 합니다.
새롭게 알게된 정보에 대해 흥미롭고 유익한 시간이였던 것 같습니다.
읽어주셔서 감사합니다.
참조
이상 포스팅을 마치겠습니다.
댓글남기기