Raku 프로그래밍 언어 :이를 수행하는 방법이 여러 개 있습니다.

Raku 프로그래밍 언어 :이를 수행하는 방법이 여러 개 있습니다.

라쿠 프로그래밍 언어 :라쿠 프로그래밍 언어 :
편집자에 의한 이미지 (Kanual Mehreen) | 캔버

소개

그만큼 라쿠 프로그래밍 언어 개발자가 깨끗하고 유연하며 강력한 코드를 작성할 수 있도록 힘을 실어주기 위해 설계된 현대적이고 표현력이 뛰어나고 다재다능한 언어입니다. 그것은 오랫동안 기다려온“Perl 6”으로서 인생을 시작했지만, Raku는 그 후 21 세기에 프로그래밍에 대한 새로운 관점을 제공하면서 Perl의 창조적 정신을 유지하는 독립적 인 언어 인 자체 정체성으로 성장했습니다. Raku는 핵심적으로 개발자 자유의 철학을 수용합니다. 여러 패러다임을 지원하고 풍부한 유형 시스템을 보유하며 텍스트 처리, 동시성 및 메타 프로 그램을위한 고급 도구를 제공합니다. Raku는 단 하나의 틈새 시장에 대한 언어가 아니라 실험을 장려하고 프로그래머에게 아이디어를 표현할 수있는 여러 경로를 제공하는 “사고를위한 도구 상자”가되는 것을 목표로합니다.

이 기사에서는 Raku의 기원으로 뛰어 들고 정의 기능을 탐색하며 빛이 빛나는 프로젝트의 종류를 고려할 것입니다.

간단한 역사

Raku의 여정은 지속성, 재창조 및 커뮤니티 중심의 혁신 중 하나입니다. 그것의 이야기는 Perl Creator가 2000 년에 시작됩니다 래리 월 그때 전화를 한 계획을 발표했습니다 perl 6. Perl 5에 대한 간단한 업데이트가 아니라, 이것은 언어의 대담한 재구성으로 구상되었습니다 : 새로운 컴퓨팅 시대를위한 프로그래밍 관행을 재고 할 수있는 기회. 향후 20 년 동안 수백 명의 기고자들이 처음부터 언어를 재 설계하여 기능 프로그래밍, 객체 지향 디자인 및 현대식 시스템의 영향을받는 동시에 Perl의 유명한 모토에 충실합니다. “그것을 할 수있는 방법이 여러 개 있습니다.”

언어가 진화함에 따라, 그 범위와 비전이 다음 버전의 Perl이라는 것 이상으로 성장했다는 것이 분명해졌습니다. 이 독립성을 인정하기 위해 커뮤니티는 새로운 이름을 선택했습니다. 라쿠2019 년.이 이름을 변경 한 것은 Raku를 독특한 언어로 인정하고 개발자가 Perl 과만 비교할 수있는 수하물없이 접근 할 수있는 초대를 모두 표시했습니다. 오늘날 Raku는 적극적이고 열정적 인 커뮤니티의 청지기 직분으로 계속 발전하여 혁신과 전통의 독특한 균형을 유지합니다.

Raku의 주요 특징

언어의 기술적 측면 중 일부를 살펴 보겠습니다. 다음은 Raku의 주요 기능 중 일부입니다.

// 다중-파라 디그 지원

Raku는 다음을 포함하여 여러 프로그래밍 패러다임을 지원합니다.

  • 절차 (클래식 단계별 코드)
  • 객체 지향 (수업, 대상, 방법)
  • 기능적 (일류 함수, 고차 기능)

이러한 유연성을 통해 귀하의 요구에 가장 잘 맞는 패러다임을 사용하여 간단한 스크립트 또는 대규모 응용 프로그램을 작성할 수 있습니다.

# Procedural
say "Hello, Raku!";

# Object-Oriented
class Animal {
    has Str $.name;
    method speak { say "$.name makes a sound." }
}
Animal.new(name => "Cat").speak;

# Functional
my @nums = (1, 2, 3, 4);
say @nums.map(* * 2);

산출:

// 동시성과 병렬성

현대 컴퓨팅에서 동시성이 점점 더 중요 해지고 Raku는 이러한 요구를 내장 구조로 해결합니다. 와 같은 기능 Promise,,, start,,, await그리고 Supply 비동기 코드를 쉽게 작성할 수 있습니다.

예를 들어, 백그라운드에서 작업을 시작하고 결과를 기다릴 수 있습니다.

my $promise = start {
    sleep 2;
    "Task done"
};
say await $promise;

// 정규 표현 및 문법

Raku는 규칙 기반 구문 분석으로 전통적인 정규 표현을 확장합니다. Raku에서는 정규 표현식이 일류 기능이며보다 고급 텍스트 처리를위한 완전한 문법을 ​​만들 수도 있습니다.

다음은 간단한 CSV 데이터를 구문 분석하는 문법의 예입니다.

grammar CSV {
    token TOP { * }
    token row {  ** ',' \n? }
    token cell { + }
}

// 강력한 유형 시스템

Raku는 정적 및 동적 타이핑을 모두 지원하는 풍부하고 표현력있는 시스템을 제공합니다. 유형을 명시 적으로 선언하거나 Raku가 추론 할 수 있습니다. 이 점진적인 타이핑 방식을 사용하면 필요한 경우에만 유형을 사용할 수 있으므로 코드가 더욱 강력하고 관리하기 쉽습니다.

# Static typing
sub greet(Str $name) {
    say "Hello, $name!";
}

# Works fine
greet("Alice");

# Type check error at runtime
greet(42);

// 메타 프로 그램

Raku는 개발자에게 고급 메타 프로 그램 기능을 제공하여 실행 중에 코드를 생성, 검사 및 수정할 수 있도록 프로그램을 제공합니다. 또한 내성, 동적 코드 평가 및 언어 구문 및 행동의 사용자 정의를 지원합니다.

Raku의 주요 메타프 그램 도구에는 다음이 포함됩니다.

  • EVAL: 런타임시 코드 문자열을 동적으로 평가합니다
  • 내성: 유형, 방법, 서명, 속성 등을 검사합니다

다음은 사용한 간단한 예입니다 EVAL 런타임시 서브 루틴을 정의하려면 :

# Define and call a function at runtime
EVAL 'sub dynamic() { say "This was defined dynamically!" }';
dynamic();

산출:

This was defined dynamically!

// 다중 파견

Raku는 다중 발송에 대한 내장 지원을 제공하므로 각 버전이 다른 유형 또는 인수 숫자를 처리하는 동일한 기능의 여러 버전을 만들 수 있습니다. 이렇게하면 각 케이스를 별도로 처리 할 수 ​​있으므로 코드가 더 명확하고 안전합니다. 런타임에서 Raku는 제공된 인수와 가장 잘 어울리는 기능 버전을 자동으로 선택합니다.

# Define multiple versions of the same function
multi greet(Str $name) {
    say "Hello, $name!";
}

multi greet(Int $times) {
    say "Hello!" x $times;
}

greet("Raku");
greet(3);

산출:

Hello, Raku!
Hello!Hello!Hello!

// 접합

정션은 한 번에 여러 잠재적 값을 나타내는 구성입니다. 당신은 그것을 포함 된 모든 값을 동시에 동시에 행동하는 값의 논리적 중첩으로 생각할 수 있습니다.

라쿠의 4 가지 주요 접합 유형은 다음과 같습니다.

  • any: 값이 조건을 충족하면 참으로 반환합니다.
  • all: 모든 값이 조건을 충족하는 경우에만 True를 반환합니다.
  • none: 값이 조건을 충족하지 않으면 True를 반환합니다.
  • one: 정확히 하나의 값이 조건을 충족하면 true를 반환합니다.
my $color="red";

if $color eq any('red', 'green', 'blue') {
    say "Valid color!";
}

my $score = 95;

if $score > all(80, 85, 90) {
    say "Excellent score!";
}

# Check if exactly one condition is true
say one(True, False, False);
say one(True, True, False);

산출:

툴링 및 생태계

Raku는 점점 더 많은 생태계와 함께 일할 수 있고 즐거워하는 일련의 현대 개발 도구에 의해 지원됩니다.

Raku 생태계의 주요 도구 및 구성 요소에는 다음이 포함됩니다.

  • 라쿠도: 공식적이고 가장 널리 사용되는 Raku 컴파일러, 적극적으로 유지되고 정기적으로 업데이트되었습니다.
  • Zef: Raku의 모듈 관리자, 종속성을 설치, 테스트 및 관리하는 데 사용됩니다.
  • read-eval-print 루프 (REPL): Raku 코드로 신속하고 실시간 실험을 허용하는 대화식 쉘
  • 왕새우: 코드 생성 및 변환 도구를 지원하기 위해 언어에 소개되는 추상 구문 트리 시스템
  • IDE 지원: Raku에는 인기있는 편집자가 사용할 수있는 플러그인 및 구문 강조 표시가 있습니다. 대 코드Vim, Emacs 등

사용 사례 및 응용 프로그램

Raku의 다목적 성과 표현성은 광범위한 프로그래밍 작업을위한 훌륭한 선택입니다.

일반적인 사용 사례는 다음과 같습니다.

  • 스크립팅 및 자동화: Raku의 간결한 구문 및 내장 쉘 친화적 인 기능은 시스템 작업, 파일 처리 또는 DevOps 파이프 라인을 자동화하는 스크립트를 작성하는 데 적합합니다.
  • 데이터 처리 및 텍스트 조작: 고급 Regex 엔진, 문법 및 유니 코드 지원을 통해 Raku는 다양한 소스 및 형식에서 데이터를 구문 분석하고 변환하는 데 탁월합니다.
  • 언어 및 컴파일러 설계: Raku의 문법 시스템, Rakuast 및 Metaprogramming 기능은 새로운 언어, 통역사 또는 코드 변환 도구를 설계하기에 완벽한 놀이터가됩니다.
  • 프로토 타이핑 및 실험: 대화식 대체 및 유연한 유형 시스템 덕분에 Raku는 아이디어 테스트, 프로그래밍 개념 교육 또는 내부 DSL 구축에 탁월합니다.

마무리

Raku는 프로그래밍 언어가 기술적 필요성뿐만 아니라 창의성과 철학에 의해 형성되는 유기적으로 성장할 수있을 때 달성 할 수있는 것에 대한 증거입니다. 스크립팅 언어의 실용주의와 현대식 시스템, 동시성 모델 및 텍스트 처리 기능의 정교함과 혼합되어 빠른 일회성 스크립트와 야심 찬 장기 프로젝트에 적합합니다. Python 또는 JavaScript와 같은 언어의 주류 인기는 아직 없을 수도 있지만 Raku는 실험을 장려하고 여러 스타일의 프로그래밍을 환영하며 표현 코딩의 모습의 경계를 지속적으로 추진하는 언어를 제공합니다. 새로운 패러다임과 가치 유연성을 탐구하는 개발자에게 Raku는 도구 일뿐 만 아니라 진화하는 생태계와 혁신에 번성하는 커뮤니티를 나타냅니다.

요컨대, Raku는 기존 언어를 교체하는 것에 대한 것이 아니라 프로그래밍 자체에 대해 생각할 수있는 새로운 렌즈를 제공하는 것에 대한 것입니다.

Jayita Gulati 기계 학습 애호가이자 기계 학습 모델 구축에 대한 열정으로 인해 기계 학습 애호가이자 기술 작가입니다. 그녀는 리버풀 대학교에서 컴퓨터 과학 석사 학위를 취득했습니다.

출처 참조

Post Comment

당신은 놓쳤을 수도 있습니다