스마트 파스칼

Smart Pascal

스마트 파스칼은 Dellphi Web Script에서 파생된 객체 파스칼 컴퓨터 언어의 방언이지만 기계 코드가 아닌 JavaScript를 생성하는 상용 개발 스위트인 Smart Mobile Studio에 맞게 확장 및 조정되었습니다.

Smart Pascal은 RAD(신속한 애플리케이션 개발) 언어이며 상당한 클래스 라이브러리와 미리 만들어진 구성 요소가 포함되어 있습니다.Smart Pascal 컴파일러는 풍부한 HTML5 준거의 서버 의존형 애플리케이션을 생성하는 고도의 소스 투 소스 컴파일러입니다.컴파일된 스마트 애플리케이션은 최신 HTML5 지원 브라우저에서 실행할 수 있습니다.컴파일된 프로그램은 일반적으로 DIV 컨테이너 요소 내에 포함되거나 디스플레이 전체를 차지하도록 설정된다.

런타임 라이브러리는 모바일 애플리케이션 개발과 관련하여 생산성과 시장 투입 기간을 높이기 위해 특별히 설계되었습니다.스마트 파스칼은 객체 파스칼과 진정한 객체 지향 프로그래밍을 통해 런타임 라이브러리의 클래스 및 컴포넌트 시스템이 어떻게 설계되었는지에 따라 언어학적으로 자바스크립트의 개발 시간을 획기적으로 단축합니다.RTL은 문서 객체 모델 및 JavaScript 환경과 상호 작용하며, 공통 분모를 추상화하고 복잡한 작업을 자동화합니다.

Smart Pascal은 또한 Espruino노드 마이크로 컨트롤러 프로그래밍에도 인기가 있습니다.JS 클라이언트/서버 모듈

배경

Smart Mobile Studio는 노르웨이인 Jon Lennart Aasenden과 프랑스인 Eric Grange가 디자인했습니다.이 기술은 소프트웨어 회사인 Optimale Systemer에 의해 출판되었다.이 언어에서는 구문 검증 및 해석에 널리 사용되는 오픈 소스 스크립팅 엔진인 DWScript(Delphi Web Script)를 사용합니다.2012년 5월 18일, Optimale Systemer는 Dellphi Web Script의 관리자인 Eric Grange가 작성한 커스텀 코드 생성기에 대한 권리를 프랑스의 Creative IT로부터 취득했다고 발표했습니다(기사:OP4J에서 Smart Mobile Studio로)

Eric Grange와 함께 일하기 전에 Jon Lennart Aasenden은 새로운 오브젝트 파스칼 컴파일러에 대한 자신의 생각을 정리한 몇 가지 제안서를 발표하였습니다.이것은 x86이나 ARM 프로세서가 아닌 Javascript와 브라우저를 대상으로 하는 컴파일러입니다.그는 또한 컴파일러의 초기 프로토타입(유튜브에서 이용 가능)을 보여주는 비디오를 제공하기도 했다.델파이와 프리 파스칼 커뮤니티로부터 처음에는 혹독한 비판을 받았지만, Eric Grange는 JavaScript가 성년이 되어 이제는 대규모로 심각한 비즈니스 애플리케이션을 구축하는 데 사용할 수 있음을 검증하고 증명했습니다.Jon Lennart는 Smart Pascal 런타임 라이브러리통합 개발 환경을 작성했으며 Eric Grange는 코드 생성기와 언어 개선을 완성했습니다.

시제품

첫 시제품(알파 빌드)은 2011년 12월 20일에 출시되었고, 이 듀오는 새로운 플랫폼에 대해 궁금해하는 다른 프로그래머들을 빠르게 끌어들이기 시작했다.이 프로젝트는 또한 Blaise Pascal Magazine (제31호)에서 2페이지에 걸친 전체 기사를 다루어 사투리를 홍보하는 데 상당한 도움을 주었다.그 결과 런타임 라이브러리와 툴은 소프트웨어 개발자 Andre Musche가 프레임워크에 기증한 Remobjects SDK 및 Embacadero Datasnap과 같은 고급 기술에 대한 지원을 포함하도록 확장되었습니다.버전 2.0부터는 독일의 수학자이자 개발자 Christian Budde가 제공하는 nodeJ, Web workers 및 Espruino 마이크로 컨트롤러 플랫폼을 지원했습니다.

동시에 기술 작가이자 소프트웨어 설계자인 Primoz Gabrijelchich(Parallel Programming 등의 책 저자)는 Smart Pascal에 관한 책을 쓰기로 결정했습니다.프로그래밍 언어를 위한 스마트북은 종종 승인 스탬프로 간주됩니다.

스마트 파스칼로 알려진 방언은 이 모든 개인들 간의 상호 협력에서 비롯되었다.

스마트 vs 플래시

Smart Pascal IDE는 기본적으로 HTML 문서에 저장되도록 설계된 객체 지향, 고속 모듈러 애플리케이션을 구축한다는 점에서 Adobe Flash와 몇 가지 유사점이 있습니다.Smart 런타임 라이브러리의 그래픽 기능은 Adobe Flash의 유명한 기능 중 일부를 복제하는 작업보다 더 많지만 Smart Pascal은 궁극적으로 HTML5 모바일 애플리케이션을 만드는 툴킷입니다.스마트 IDE가 제공하는 시각적 자동화는 거의 없습니다. 스마트 파스칼은 단순히 멀티미디어 작곡가가 되도록 설계되지 않았고 오브젝트 파스칼 프로그래머를 위한 명확한 HTML5 개발 플랫폼입니다.Smart Pascal의 학습 곡선은 Adobe ActionScript보다 상당히 높습니다.파스칼은 주로 엔지니어들에 의해 사용되는 언어이다.

Visual Smart Pascal 애플리케이션은 폼을 기반으로 합니다.개별 창에는 컨트롤을 설정할 수 있으며 코드이벤트를 연결하여 사용자 액티비티에 응답할 수 있습니다.Smart Mobile Studio에는 비주얼 폼 디자이너와 속성 에디터가 포함되어 있지만, 이 디자이너는 일반적인 사용자 인터페이스를 위한 보조 도구일 뿐이며 시각 효과를 지원하지 않습니다.

아키텍처 레벨에서 Smart Pascal 런타임 라이브러리는 동적으로 작성된 CSS3 스타일, "트위닝", 디스플레이 리드로 동기화, GPU에 의한 2D 및 3D 스프라이트, WebGL 등 고도의 그래픽 표현을 완전히 지원합니다.스마트 파스칼은 "플래시 같은 것"이라고 말할 수 있지만, 여기서 유사점이 끝납니다.언어적으로나 개념적으로 이들 소프트웨어의 방법론은 크게 다릅니다.그들은 거의 같은 결과를 얻을 수 있음에도 불구하고 다른 것을 위해 만들어졌다.Smart Pascal은 HTML5 응용 프로그램에 종속성이 없다는 점에서 Flash보다 한 가지 장점이 있습니다.Smart Pascal 프로그램은 플러그인, 브라우저 확장 또는 서드파티 라이브러리에 의존하지 않습니다.그러나 플래시는 궁극적으로 10년 이상 지속적으로 진화하고 멀티미디어의 우수성을 보여 주는 보다 세련된 제품입니다.

스마트 vsmart의 비교타이프 스크립트

Smart는 TypeScript 라이브러리를[disputed (for: TypeScript libraries are JavaScript libraries.) ] 가져올 수 있지만 수동 조정이 필요합니다.개념으로서의 타이프 스크립트는 Smart Pascal에 매우 가깝습니다.두 시스템;두 체제에는 클래스의 모든 개념 부족한 플랫폼으로 d와 개체 inheritance[논쟁(:TypeScript)상속을 도입하지 않–을 논의하기 위해]orientation[논쟁(:TypeScript)– 논의 대상 오리엔테이션을 소개하지 않는]을 소개합니다 대규모 자바 스크립트 애플리케이션을 작성의 다소 지루한 노동력 추상화Atatypes[논쟁(:자바 스크립트)– 수업이 있다.]과 VMT(가상 메서드 테이블)을 집행한다[논쟁(:TypeScript 가상 콘텐츠를 소개하지 않는)–을 논의하기 위해].이 경우 Smart Pascal은 TypeScript보다 먼저 생성되어 기술적으로 우위에 있지만 Adobe Flash와 마찬가지로 Smart Pascal과 TypeScript는 궁극적으로 매우 다른 두 가지 개념을 나타냅니다.또한 TypeScript는 Microsoft가 제공하는 대규모 사용자 기반에서 이점을 얻습니다.여기서 스마트 파스칼은 오브젝트 파스칼 프로그래머로 제한됩니다.하지만 둘 다 거의 같은 능력을 가지고 있다.

데이터베이스 액세스

Smart pascal 런타임 라이브러리는 유통 중인 모든 브라우저 데이터베이스 엔진을 지원합니다.이러한 접근은 컴포넌트가 아닌 클래스를 통해 이루어지며, 이는 Object Pascal이 전통적으로 데이터를 처리하는 방식과는 다릅니다.이 기술에서는 다음 엔진이 지원됩니다.

또한 스마트 IDE는 Dellphi 및 C++ 빌더에서 널리 사용되는 원격 데이터 액세스 프레임워크인 Embacadero DataSnap을 가져와 액세스할 수 있도록 합니다.이러한 가져오기 라이브러리를 사용하면 Smart Pascal 응용 프로그램이 원격 데이터 세트를 읽고, 쓰고, 업데이트할 수 있습니다.스마트 파스칼은 엠바카데로 델파이로 쓰여져 있다.

런타임 라이브러리에는 Microsoft RPC와 같은 원격 프로시저 호출 프레임워크인 RemObjects SDK용 클래스가 포함됩니다.JSON RPCWebSockets도 마찬가지로 클래스 라이브러리의 일부입니다.

언어상의 차이

스마트 파스칼은 표준 객체 파스칼과 사투리를 명확하게 구분하는 몇 가지 차이점을 가지고 있습니다.

  • 속성식
  • 어레이 조작
  • 익명 메서드
  • 어나니머스 클래스
  • 부분 클래스
  • 람다스
  • 클래스 변수
  • 한정 세트 지원
  • 제네릭의 결여
  • 제한 RTI

속성식

Object Pascal에서 속성은 클래스 필드 또는 클래스 멤버 메서드에 연결할 수 있는 노출된 값입니다.이것은 가치 속성을 드러내는 전통적인 방법으로, 속성의 소비자는 리더와 라이터의 논리로부터 추상화됩니다.소비자는 속성이 필드 또는 기록기 메서드에 명시적으로 연결되어 있는지 알 수 없습니다.

스마트 파스칼은 오래된 패러다임을 완전히 지원하지만 "속성 표현"이라는 기술을 도입합니다.기본적으로 속성 선언의 일부로 리더 및 라이터 논리를 프로그래밍할 수 있습니다.이것은 기존의 Object Pascal에서는 전혀 볼 수 없는 것이지만, C#이나 Objective-C와 같은 다른 언어에서는 일반적입니다.

고전적인 오브젝트 파스칼에서는 다음과 같이 쓸 수 있습니다.

유형 TMy 오브젝트 = 학급( .. ) 사적인   FSubObj: TName 데이터; 보호되고 있다   기능. get First Name:스트링;   절차. set First Name(설정명)(가치:스트링); 출판된   소유물 이름:스트링 읽어주세요 get First Name 쓰다 set First Name(설정명); 끝.;  기능. TMy 오브젝트.get First Name:스트링; 시작한다.   결과:=FSubObj.이름; 끝.;  절차. TMy 오브젝트.set First Name(설정명)(가치:스트링); 시작한다.   FSubObj.이름:=가치; 끝.; 

속성 표현과 함께 Smart Pascal을 사용하면 getFirstName() 및 setFirstName() stub을 생략하고 속성 선언 자체의 일부로 로직을 구현할 수 있습니다.

소유물 이름:스트링               읽어주세요 ( FSub Object(FSub 오브젝트).이름 )               쓰다 ( FSub Object(FSub 오브젝트).이름 ); 

속성 표현식은 하위 개체가 있는 클래스에 특히 유용합니다.클래스가 제네릭 이전에 가지고 있던 서브 오브젝트(오브젝트 리스트)를 표시하여 동일한 코드를 여러 번 쓸 경우 이미 존재하는 코드를 목록 오브젝트로 래핑하면 복잡한 클래스 계층에서는 불필요한 bloat으로 실행 속도가 느려집니다.이것은 제네릭스의 도입으로 개선되었지만, 독자 및 작자의 논리를 다른 반에서 분리해야 합니다.Smart Pascal에서는 어레이를 사용하여 우아하게 이 작업을 수행할 수 있습니다.

TMy 클래스 = 학급    사적인       FLIST : 배열  텔레멘테이션;    일반의       소유물 항목들[i: 정수] : 텔레멘테이션 읽어주세요 (FLIST[i])                                              쓰다 (FLIST[i]); 체납;       소유물 세어보세요 : 정수 읽어주세요 (FLIST.길이); 끝.; 

이 기술을 통해 번호 변환이 대폭 간소화되며 경우에 따라서는 선언에서 직접 수행할 수 있습니다.

TMy Angle(TMyAngle) = 기록.    사적인       팬글 : 흘러가다;    일반의       소유물 라디안 : 흘러가다 읽어주세요 팬글 쓰다 팬글;       소유물  : 흘러가다 읽어주세요 (RadToDeg(팬글))                                 쓰다 (팬글:=데그토라드(가치)); 끝.; 

어레이 조작

어레이 작업이 스마트 파스칼 구문에 추가되어 JavaScript에 더 잘 적응할 수 있게 되었습니다.JavaScript에는 포인터나 다이렉트 메모리 액세스의 개념이 없기 때문에, 기존의 방법으로 리스트나 링크드 리스트등을 처리하려고 하면, 대량의 속도 위반이 발생합니다.Dellphi 또는 Free Pascal에서 TList 또는 TObject List 인스턴스를 할당하는 경우 Smart Pascal은 일반 어레이를 사용하여 더 나은 성능과 동일한 기능을 제공합니다.모든 어레이는 데이터 유형에 관계없이 콘텐츠 삽입, 삭제, 정렬 및 기타 조작을 위한 완전한 작업 세트를 지원합니다.

vanilla Object Pascal 아래에 다음과 같이 쓸 수 있습니다.

절차. TMy 오브젝트.아이템 추가(a값:정수); 변화하다   mLen: 정수; 시작한다.   mLen:=길이(FMyArray);   set Length(설정 길이)(FMyArray,mLen +1);   FMyArray[mLen]:=보에; 끝.; 

Smart Pascal에는 데이터 유형이 일치하는 한 모든 어레이에 대해 이 기능이 "내장"되어 있습니다.이를 속성 표현과 결합하면 제네릭이나 기존 Object Pascal보다 더 적은 리소스와 더 빠른 속도로 동일한 작업을 수행할 수 있는 강력하고 대체적인 방법을 얻을 수 있습니다.

FMyArray.더하다(a값); 

이 문서에서는 모든 어레이 유형에 대해 다음 작업을 수행할 수 있습니다.

  • 더하다
  • 분명한
  • 알았다.
  • 세어보세요
  • 삭제
  • 높은
  • 낮다
  • 색인
  • 삽입
  • 길이
  • 지도
  • 훔쳐보다
  • 밀다
  • 제거한다.
  • 리버스
  • Set Length(설정 길이)

Peek(), Pop() 및 Push() 메서드는 일반적으로 FILO(선입선출) 및 FIFO(선입선출) 스택오브젝트와 함께 사용됩니다.Smart Pascal은 TObjectlist, TList, TStringlist 및 TStack 등의 클래스가 필요하지 않습니다(이러한 클래스는 Dellphi의 Visual Component Library에서만 레거시 지원을 위해 런타임 라이브러리에서 제공됩니다).

익명 메서드

속성 표현식 및 배열 조작과 마찬가지로, JavaScript와의 호환성을 향상시키기 위한 수단으로 어나니머스 메서드가 스마트 파스칼에 도입되었습니다.Dellphi와 Free Pascal은 모두 익명 메서드를 지원하지만 Smart Pascal은 이러한 네이티브 컴파일러보다 한 가지 장점이 있습니다.네이티브 Pascal(실행 가능한 기계 코드를 생성하는 컴파일러) 아래에 클래스 프로시저와 일반 프로시저가 있습니다.이 두 가지 사이의 유일한 차이점은 첫 번째(클래스 메서드)를 참조하려면 선언을 "of object"로 수정해야 한다는 것입니다.클래스 메서드를 참조하는 이 방법은 일반적으로 이벤트 선언에 사용됩니다.

이벤트는 일반 객체 파스칼에서 다음과 같이 선언됩니다.

유형 TMy 이벤트유형 = 절차. (송신자:토브젝트;컨스턴트 가치:정수)  물건; 

"of object" 접두사를 생략하면 참조는 단위 수준의 프로시저 및 함수에서만 사용할 수 있습니다.컴파일러에서는 오브젝트 메서드를 명확하게 정의하지 않으면 참조할 수 없습니다.

스마트 파스칼은 이 구별을 가지고 있지 않다.스마트 방언에는 "오브 오브젝트"가 없습니다.익명의 메서드는 오브젝트 기반 이벤트와 콜백 핸들러를 포함하여 네이티브 오브젝트 파스칼보다 더 넓은 규모로 적용될 수 있습니다.

Smart Pascal에서 아래 예는 완벽하게 유효하며 문제 없이 컴파일됩니다.

컨스트럭터 TMyPanel(TMyPanel).만들다(AOwner:TW3 컴포넌트); 시작한다.   상속됨 만들다(AOwner);   FiPhone Header:=TW3 Header Control(HEADERControl).만들다(자신);   FiPhone Header.뒤로 단추.클릭 := 절차. (송신자:토브젝트)          시작한다.             w3_콜백( 절차. ()                     시작한다.                        show message('2초 전에 뒤로 버튼을 클릭했습니다.');                     끝., 2000);          끝.; 끝.; 

어나니머스 클래스

기존 객체 파스칼에서는 모든 클래스가 TObject라는 루트 유형에서 상속됩니다.이것은 스마트 파스칼이 진화한 델파이 웹 스크립트도 마찬가지였다.Javascript로 작성된 클래스를 Import할 수 있도록 하려면 (DOM(문서 객체 모델) 및 JavaScript 모듈의 전체 스펙트럼을 지원하는 데 매우 중요함) 모든 클래스 유형의 루트로 TObject에 의존해야 합니다.

에릭 그랜지는 1.0 버전부터 스마트 파스칼에 익명 클래스를 도입했는데, 이는 스마트 파스칼이 외부 클래스를 직접 가져와 사용할 수 있게 되었다는 것을 의미한다.이것에 의해, 유저는 클래스를 외부로서 간단하게 정의할 수 있기 때문에, 인터페이스에 일치하는 JavaScript 로 작성된 클래스를, Pascal 로 작성된 클래스와 함께 작성해 사용할 수 있습니다.이는 객체가 무에서 루팅되도록 함으로써 실현됩니다(예: 사전 정의된 생성자 논리 및 동작 없음).

   JCustom 이벤트초기화 = 학급 외부의 '커스텀 이벤트'초기화' (JEventInit)       세부 사항 : 변종    끝.;     제벤트 타깃 = 학급 외부의 '이벤트 타깃'       절차. addEventListener(a타입 : 스트링; 콜백 : JEVENT Listener; 포획.  : 부울 = 거짓의);       절차. remove Event Listener(a타입 : 스트링; 콜백 : JEVENT Listener; 포획.  : 부울 = 거짓의);       기능.  디스패치 이벤트(이벤트 : 제벤트) : 부울;    끝.; 

익명 클래스는 TObject에서 제공하는 수명 주기 관리를 포함하지 않으므로 레코드(다른 언어의 사용자 지정 데이터 유형)에 더 가까운 경량 개체(external 키워드 없음)로도 사용할 수 있습니다.

부분 클래스

부분 클래스는 아직 Object Pascal 표준에 포함되지 않은 기능입니다.이는 기본적으로 클래스 또는 레코드 유형의 완전한 선언 및 구현이 여러 소스 파일에 분산될 수 있음을 의미합니다.또한 한 부품을 미리 컴파일하고 다른 부품을 다른 부품에 구현하기 위해 다른 부품을 열어둘 수도 있습니다.예를 들어 iOS의 Mono C#에서는 프레임워크 사용자가 미리 컴파일된 애플리케이션 컨트롤러를 완료해야 합니다.

부분 클래스는 신중하게 전개할 때 매우 도움이 되는 기능입니다.다른 모델을 대상으로 하는 대규모 클래스 계층에 특히 유용합니다.프로그래머에 의해 설정된 모델에 따라 특정 기능의 구현은 포함된 소스 파일에 따라 달라집니다.

스마트 파스칼은 부분 클래스의 두 가지 선언 형식을 지원합니다.RemObjects Oxygene Pascal 구문 및 보다 직관적인 "type mytype = partial class(partial class(partial type)" 변형입니다.부분 클래스는 Smart Pascal 런타임 라이브러리 전체에서 사용됩니다.

  TW3 커스텀 컨트롤 = 부분적인 학급(TW3 Movable Control(이동 제어))   사적인     팬글: 흘러가다;     FScroll Info: TW3ScrollInfo;     FClass 이름: TW3CSSClass Style 이름;     폰트: TW3 Control Font;     ...     ... 

람다스

람다스는 부분 및 익명 클래스와 마찬가지로 아직 클래식 객체 파스칼의 일부가 아닌 매우 편리한 기능입니다.스마트 파스칼 구문은 여러 종류의 람다를 지원하므로 비동기 코드를 작성할 때 매우 편리합니다.

예를 들어 다음과 같은 마감입니다.

변화하다 리피터 := TW3 이벤트 리피터.만들다(   기능. (송신자: 토브젝트): 부울   시작한다.     결과 := 마이 펑션;   끝.,  5000); 

람다로 표기할 수 있다.

변화하다 리피터 :=   TW3 이벤트 리피터.만들다(람다 => 마이 펑션, 5000); 

람다 문(즉, "절차" 종류의 폐쇄)은 다음과 같이 작성할 수 있다.

  문제없다.온클릭 := 람다 어플.숨김모듈(확인하다); 끝.; 

클래스 변수

클래스 변수는 기본적으로 인스턴스 구성에 관계없이 변경할 수 있는 클래스(또는 여러 변수)를 정의할 수 있음을 의미합니다.클래스 프로토타입에서 객체를 만들기 전에 조건을 설정하는 데 유용한 기술입니다.

  TMy 클래스 = 학급(토브젝트)   일반의   변화하다 드라이버 모드:정수;   끝.;    TMy 클래스.드라이버 모드:=1200; 

한정 세트 지원

파스칼에서 집합은 같은 유형의 원소의 집합입니다.Smart Pascal 구문은 현재 "in" 연산자와 "include(aSet, aValue)" 또는 "exclude(aSet, aValue)" 메서드를 포함한 열거 집합만 지원합니다.

유형   TMy 세트 = 세트  (첫 번째,밀리초,ms Third(밀리초));  변화하다 마이셋: TMy 세트; 시작한다.   // 2개의 상태로 세트 채우기   마이셋 := [첫 번째,ms Third(밀리초)];   한다면 첫 번째  마이셋 그리고나서     기입하다('첫 번째');   제외하다(마이셋,첫 번째);   한다면 첫 번째  마이셋 그리고나서     기입하다('표시되지 않음'); 끝.; 

제네릭의 결여

스마트 파스칼은 제네릭을 지원하지 않습니다.Delphi Web Script Smart Pascal의 원래 구문은 Delphi 7과 호환성이 있었습니다.DWScript의 코드 베이스와 언어는 과거 6년간 크게 진화했지만 제네릭스는 파서 전체와 AST(컴파일러 사이언스의 추상 심볼 트리) 기술을 완전히 다시 써야 하는 중대한 변화를 의미합니다.

제네릭의 부족은 언어의 두 가지 특징에 의해 완화됩니다.

  • 강력한 어레이 지원('TList'를 대체하는 편리한 기능)
  • class of types는 실행 시 (일반 객체 파스칼과 마찬가지로) 특정 "class" 인스턴스를 인스턴스화하기 위해 사용할 수 있습니다.

제한 RTI

런타임 유형 정보는 속성 및 클래스 멤버 열거 기능을 포함하여 DWScript에서 부분적으로 지원됩니다.프로젝트의 컴파일러 옵션에 "Emit RTI 정보"가 정의되어 있는 경우 RTI는 Smart Pascal JavaScript 컴파일러에 의해 구현됩니다.현재 게시된 속성만 이 정보의 일부입니다.

활성화되면 다음 클래스:

유형    TBase = 학급       출판된          들판 : 정수 = 1;    끝.; 

는 다음 RTI JavaScript 개체를 내보냅니다.

변화하다 RTI = [  { T: {아이디:TBase}, A: { 클래스 타입: RTTIProperty 속성, N: "필드", T: {아이디:번호}, C: 3, G: 기능. (s) { 돌아가다 s.들판 }, S: 기능. (s,v) { s.들판=v } } } ]; 

그러면 이 문서에서 설명한 대로 코드에서 이 정보에 액세스할 수 있습니다.

컨센서스

스마트 파스칼은 종종 오브젝트 파스칼의 세계에서 강력한 기이한[citation needed] 존재로 여겨진다.이 언어는 Embacadero Dellphi에 의해 정의된 거의 모든 구문 기능을 지원하지만, 종종 구문을 깨거나 확장하여 비동기 프로그래밍에 더 유용한 급진적이지만 효과적인 솔루션을 도입합니다.따라서 JavaScript와 Objective-C에서 차용한 개념을 C++, C# Smalltalk의 요소와 혼합하여 촉진합니다.그 결과, 서버리스 HTML5 JavaScript 개발을 대폭 간소화하는 Object Pascal의 유연하고 역동적인 풍미를 얻을 수 있습니다.

강력한로 방언은, 많은 전통적인 오브젝트 파스칼 프로그래머들이 혼성 언어, 일반적인 반대 이유는 스마트 기능은 오브젝트 파스칼에 대한 확립된 원칙에 외계인을 촉진하는 것으로 스마트 보고 있다.스마트 지지자들은 이 새로운 방언 현대 소프트웨어 발전을 위해 이고 적응하-일반 명의 약이 최근의 패러다임의 변화로 지적하고 진화할 오브젝트 파스칼에게 필요한 게 바로 필요하다고 주장한다.이와 같이, 이 지지자들이 새로운 언어는 긴 확립된 구문을 위협할 정도는 아니지만, 더욱 더 현대적인 언어로부터 검증된 기법과 그것을 풍요롭게 한다고 주장한다.

원천

외부 참조