Yoix
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
|
![]() | |
| Paradigm | Multi-paradigm, Object-based, procedural |
|---|---|
| Designed by | Rich Drechsler and John Mocenigo |
| First appeared | 2000 |
| Stable release | 2.3.1 / November 25, 2011 |
| Typing discipline | Dynamic, Weak |
| OS | Cross-platform |
| License | Open Source Initiative Common Public License |
| Website | https://github.com/att/yoix |
| Influenced by | |
| C, Java, PostScript | |
In computer programming, Yoix is a high-level, general-purpose, interpreted, dynamic programming language. The Yoix interpreter is implemented using standard Java technology without any add-on packages and requires only a Sun-compliant JVM to operate.[citation needed] Initially developed by AT&T Labs researchers for internal use, it has been available as free and open source software since late 2000.
History
In 1998, Java technology was still emerging: the Swing toolkit was an add-on package; interruptible I/O, regular expressions, and a printf capability were not yet features; nor had Java Web Start been developed. Moreover, Java scripting languages were largely non-existent at that time: Groovy and JRuby had not yet been invented and Jython had just been created in late 1997. Browsers in 1998 had limited feature sets, were too unstable for production use in an 8-hour shift[dubious ] and were still fighting skirmishes in the Browser Wars. In this environment, Yoix technology was created in response to a pressing need for a reliable, easy to distribute and maintain, GUI front-end for a mission-critical application being developed within AT&T, namely its Global Fraud Management System, which to this day monitors and tracks fraud activity related to voice traffic on AT&T's expanding networks: wireline, wireless, and IP. Yoix technology was first released to the public in late 2000 under the Open Source Initiative Common Public License V1.0.
Yoix라는 이름은 부분적으로 사냥개들을 격려하는 여우 사냥의 외침에서 비롯되었으며, 일부는 ix로 끝나는 또 다른 친숙한 네 글자의 이름을 따라 하기 위해서, 그리고 일부는 [citation needed]구글 검색에서 너무 많은 잘못된 긍정을 피하기 위해서이다.
개요
Yoix 테크놀로지는 AT&T Labs의 연구자가 개발한 범용 다이내믹 프로그래밍 언어의 순수 Java 프로그래밍 언어 구현을 제공합니다.그 구문과 문법은 C 프로그래밍 언어와 Java에 익숙한 사람들이 배우기 쉬울 것입니다.최종 사용자에게 Yoix 어플리케이션은 Java 어플리케이션과 구별할 수 없지만 어플리케이션 개발자인 Yoix는 Perl 코드를 작성하는 것이 C 코드를 작성하는 것보다 간단하듯이 Java에서 직접 작업하는 것보다 간단한 코딩 경험을 제공해야 합니다.
특징들
Yoix 언어는 객체 지향 언어가 아니지만 대부분의 표준 Java 클래스에 액세스할 수 있는 165개 이상의 객체 유형을 사용합니다.Yoix 인터프리터는 완전히 Java 테크놀로지를 사용하여 구축되었기 때문에 Yoix 어플리케이션은 크로스 플랫폼, GUI 지원, 네트워크 및 스레드 친화성이라는 것을 의미합니다.그러나 Yoix 개발자는 Java에서 동일한 기능을 직접 코딩하는 보다 복잡하고 오류가 발생하기 쉬운 부분으로부터 격리되어 있습니다.리플렉션을 사용하여 Java 기능에 액세스하지 않기 때문에 해당 기능에 대한 액세스를 단순화할 뿐만 아니라 Java 글리치와 [clarification needed]복잡한 Java 기능을 통해 코드화함으로써 애플리케이션 신뢰성을 향상시킵니다.Yoix 언어에는 안전한 포인터, 주소 지정, 선언 및 전역 및 로컬 변수가 포함됩니다.네이티브 사용자 기능 지원 외에도 Java로 작성된 자체 내장 기능을 추가할 수 있습니다.
설계.
Yoix 설계의 두 가지 핵심 요소는 PostScript[citation needed] 언어에서 차용한 것입니다. 언어 컴포넌트로서의 사전과 노출된 시스템 컴포넌트로서의 권한 보호 사전입니다.Tcl 언어와 그 노출 철학에 대한 오마주 또한 직접적인 영향을 미치지 않았지만 [citation needed]주어져야 한다.
또 다른 주요 Yoix 설계 요소는 포인터와 어드레싱을 포함한다.Yoix 언어의 포인터 및 포인터 산술은 구문적으로 C 언어에서 발견되는 것과 유사하지만 Yoix 구현은 경계를 벗어난 포인터를 사용하지 못하게 합니다.또한 주소 연산자는 항상 유효하고 사용 가능한 [dubious ]결과를 생성합니다.
전반적으로 Yoix 디자인은 C [improper synthesis?]및 Java 언어를 경험하는 프로그래머가 언어를 쉽게 배울 수 있도록 시도했습니다.
적용들
Yoix 배포판에는 Yoix 웹 응용 프로그램을 빌드하기 위한 소프트웨어 프레임워크인 Yoix Web Application Instant Template(YWAIT)가 포함되어 있습니다.Yoix 웹 애플리케이션은 웹 서버에 상주하며 클라이언트 머신에서 실행되는 Yoix 인터프리터에 의해 필요에 따라 런타임에 단편적으로 다운로드됩니다.이 모델은 클라이언트 웹 브라우저가 필요에 따라 웹 사이트를 단편적으로 다운로드하는 익숙한 모델과 유사하며, 애플리케이션의 단순하고 효율적인 배포 및 유지보수를 가능하게 하며, 유비쿼터스 웹 서버와 Yoix 인터프리터에만 의존합니다.YWAIT 프레임워크를 사용하여 웹 애플리케이션을 구축하려면 Linux나 Mac OS X와 같은 대부분의 최신 운영 체제에서 또는 U/Win과 같은 애드온 패키지를 사용하여 Microsoft Windows에서 사용할 수 있는 몇 가지 표준 Unix 도구만 있으면 됩니다.YWAIT 기반 응용 프로그램의 클라이언트 측에서는 Yoix 인터프리터에만 의존하므로 플랫폼에 의존하지 않고 Java가 실행되는 곳이면 어디서든 실행됩니다.Yoix 소프트웨어 개발 철학은 여러 임베디드 전문 언어에 대한 일반적인 경향을 배제하고 단순함을 유지하는 것을 목표로 하며, YWAIT 프레임워크는 심플하고 논리적인 소스 트리 계층에서 쉽고 증분적인 화면 개발을 허용하기 때문에 Yoix 웹 애플리케이션 개발은 기본적인 명령 프롬프트입니다.텍스트 [improper synthesis?]에디터도 있습니다.IDE 애호가들은 당황하지 않을 수 있지만, 소프트웨어 개발에 대한 이 작은 이 아름다운 접근법은 AT&[dubious ]T의 실무에서 매우 효과적입니다.
데이터 시각화
Yoix 테크놀로지는 GUI 애플리케이션 구축 툴로서의 역할과 더불어 여러 가지 데이터 시각화 모드를 지원합니다.
데이터 마이닝
YOix Data Analysis Tool(Yoix Data Analysis Tool)이라는 데이터 시각화 모듈이 공개 Yoix 배포에 포함되어 있습니다. YDAT는 이벤트 플롯, 그래프 그리기 창, 히스토그램 필터 및 표 형식의 세부 정보를 포함하는 여러 시각화 구성 요소 간에 데이터 표시 및 필터링을 조정하기 위해 데이터 관리자 구성 요소를 사용합니다.YDAT는 AT&T Labs에서 무료로 이용할 수 있는 또 다른 오픈 소스 도구인 GraphViz 그래프 그리기 및 레이아웃 도구에 의해 생성된 그래프를 표시할 수 있습니다.YDAT는 Yoix 언어 수준에서 매우 쉽게 구성할 수 있습니다.아래 이미지는 차량 경매 트랜잭션 분석에 사용되는 Yoix YDAT 인스턴스화의 스크린샷입니다.
그래프 그리기
Yoix 기술은 그래프 그리기에 좋은 지원을 제공합니다.YOD 모듈의 일부로서 위에 언급된 그래프 표시 외에 Yoix 언어의 데이터 유형은 그래프 구조의 구축, 조작 및 횡단을 지원합니다.Native Yoix 함수는 DOT 언어 출력 및 내장 DOT 언어 파서를 지원하여 GraphViz 레이아웃 엔진과의 상호 작용을 용이하게 합니다.
데이터 셀 구성
YChart 데이터 시각화 툴킷은 릴리스 2.2.0에서 Yoix 배포판에 추가되었습니다.YChart를 사용하면 데이터 셀을 정리하고 표시할 수 있습니다.Yoix 분포에 포함된 두 개의 대화형 YChart 응용 프로그램은 원소 주기표와 유니코드 차트입니다.Yoix 분포에서는 일정과 같이 가변 폭 셀과 함께 YChart를 사용하는 것을 시연하는 프로그램도 사용할 수 있습니다.
인터랙티브한 2D 그래픽스
Yoix 분포에는 선 차트, 히스토그램 및 통계 상자 그림과 같은 기본 데이터 그림을 렌더링하기 위한 Byzgraf라는 Yoix 패키지도 포함되어 있습니다.
제한 사항 및 초점
현재 구현되어[when?] 있는 것처럼 Yoix 언어는 해석됩니다.이는 예를 들어 Java 모듈 확장으로 이러한 계산을 코드화하지 않는 한 계산 부하가 높은 애플리케이션에는 적합하지 않을 수 있음을 의미합니다.마찬가지로 과도한 루프도 이 해석된 언어의 제한을 나타냅니다.이 언어의 초점은 대화형 스탠드아론 또는 클라이언트/서버 GUI 및 데이터 시각화 애플리케이션입니다.
라이선스
Yoix 테크놀로지는 Open Source Initiative Common Public License에 따라 라이센스가 부여된 무료 소프트웨어입니다.Yoix는 AT&T Inc.[1]의 등록 상표입니다.
예
1. AT&T 홈페이지에서 HTML 지시문을 모두 추출하여 표준 출력에 씁니다.
수입품 yoix.*.*; URL att = 열다.("https://www.att.com", "r"); 스트링 본문; 인트 하지 않다 = 0; 하는 동안에 (하지 않다 >= 0) { 한다면 ((하지 않다 = fscanf(att, "<%[^>>", &본문)) > 0) 인쇄물("<%s>\n", 본문); 또 다른 하지 않다 = fscanf(att, "%*[^<]"); // 폐기 } 2. 제목 테두리도 있는 제목 프레임(창 등)에 두 개의 버튼이 있는 GUI를 구축하여 표시합니다.한쪽 버튼을 누르면 메시지가 팝업되고 다른 한쪽 버튼은 예제를 종료합니다.윈도우의 크기는 컴포넌트에 맞게 자동으로 조정되며, 일부 추가 코드는 윈도우의 위치를 계산하여 표시하기 전에 윈도우를 화면 중앙에 배치합니다.
수입품 yoix.*.*; JFrame jf = { 치수 크기 = 특수한 순서; // 창 크기 자동 조정 플로우 레이아웃 레이아웃 매니저 = { 인트 틈새 = 18; // 0.25인치 간격 }; 스트링 직함 = "Wikipedia Yoix 예제"; // 창 제목 스트링 경계 = "단추 예"; // 테두리 제목 어레이 레이아웃 = { 신규 JButton { 스트링 본문 = "메시지 입력"; 실행한 액션(액션 이벤트 에바) { show Message Dialog(뿌리, "안녕, 세상아", "메시지 예시"); } }, 신규 JButton { 스트링 본문 = "종료하려면 누르십시오"; 실행한 액션(에바) { // ActionEvent 선언을 생략할 수 있습니다. 퇴장(0); } }, }; }; // 프레임 크기를 알 수 있으므로 프레임 위치를 화면 중앙으로 설정합니다. jf.위치 = 신규 포인트 { 인트 x = (VM.화면..폭 - jf.크기.폭) / 2; 인트 y = (VM.화면..높이 - jf.크기.높이) / 2; }; // 표시하다 jf.눈에 보이는 = 진실의; 3. 여기에 표시된 코드는 이 페이지 상단에 있는 언어 설명란에 보이는 PNG 형식의 Yoix 로고 이미지를 생성하는 데 사용되었습니다.명령줄 인수를 사용하면 이미지 크기를 지정할 수 있을 뿐만 아니라 PNG 이미지 출력 또는 화면 창에 표시할 수도 있습니다.
수입품 yoix.*.*; 빌드 Yoix Logo 이미지(이중으로 하다 높이, 색. 색., 인트 추가 그림자) { // 그림자 없이 기본 이미지 생성 Gen Image(제너레이션 이미지)(이중으로 하다 높이, 색. 색., 폰트 이미지 폰트, 이중으로 하다 규모.) { 이미지 yoixlogo = { 인트 유형 = 타입_RGB_ALPA; 색. imgcolor(색상) = 색.; 이중으로 하다 규모. = 규모.; 폰트 이미지 폰트 = 이미지 폰트; 폰트 인식하다 = 이미지 폰트.스케일 폰트(0.5, 0.5); 그래픽스 그래픽스 = { 폰트 폰트 = 이미지 폰트; 인트 텍스트 기능 = 진실의; }; 이중으로 하다 ywd = 문자열 폭(그래픽스.폰트, 'Y'); 치수 크기 = { 이중으로 하다 높이 = 높이; 이중으로 하다 폭 = ywd * 5.25; }; 이중으로 하다 동작했다 = 문자열 폭(그래픽스.폰트, "o"); 이중으로 하다 할 수 있다 = 문자열 폭(그래픽스.폰트, '나'); 이중으로 하다 xwd = 문자열 폭(그래픽스.폰트, "x"); ywd += 할 수 있다; ywd /= 2.0; 페인트(직사각형 r) { 이중으로 하다 알파 = 1.0; 이중으로 하다 알파2 = 0.3333; 인트 제한. = 12; 그래픽스 { 저장하다(); 소거할 수(0.0); // 투과 PNG의 경우 똑딱이(r); setrgbcolor(imgcolor(색상).빨간., imgcolor(색상).초록의, imgcolor(색상).파랑색); 번역하라(48 * 이것..규모., 44 * 이것..규모.); 위해서 (n=0; n< >제한.; n++) { 이동처(0.0, 0.0); 설정(이것..이미지 폰트); // 키닝 "실행" 쇼우('Y', 알파); 한다면 (n == 0) { 이동처(ywd, 0.0); 쇼우("o", 알파); 이동처(ywd + 동작했다 - 0.3 * 할 수 있다, 0.0); 쇼우('나', 알파); 이동처(ywd + 동작했다 + 0.8 * 할 수 있다, 0.0); 쇼우("x", 알파); 이동처(ywd + 동작했다 + 0.8 * 할 수 있다 + xwd, -이것..이미지 폰트.높이 * 0.33); 설정(이것..인식하다); 쇼우("\xAE", 알파); 알파 = 알파2; } 알파 *= 0.75; 회전하다(30); } 복원(); } } }; 돌아가다(yoixlogo); } 폰트 베이스 폰트 = { 스트링 이름. = 「클리어 뷰ATT-Plain-48인치; }; 이중으로 하다 규모. = 높이 / 90.0; 폰트 이미지 폰트 = 베이스 폰트.스케일 폰트(규모., 규모.); 한다면 (추가 그림자) { 이미지 로고 = Gen Image(제너레이션 이미지)(높이, 색., 이미지 폰트, 규모.); 이미지 = 신규 이미지 { 인트 유형 = 타입_RGB_ALPA; 이미지 원천 = 로고; 이미지 img = 로고; // 이미지를 구부려 (밝은) 그림자를 만듭니다. 이미지 그림자 = 신규 이미지 { 인트 유형 = 타입_RGB_ALPA; 이미지 원천 = img; 어레이 커널 = 신규 어레이[100]; 포인터 ptr; 위해서 (ptr 에 커널) *ptr = 0.0055; 페인트() { 구부러지다(커널); } }; // 이미지와 그림자를 하나의 이미지로 결합 페인트(직사각형 r) { 그래픽스 { 저장하다(); 이동처(0, 0); 표시 이미지(이것..img); 이동처(이것..img.크기.높이 * 0.005, 이것..img.크기.높이 * 0.02); 표시 이미지(이것..그림자); grestore(); } } }; } 또 다른 { 이미지 = GenImage(높이, 색., imagefont, 규모.); } 돌아가다(이미지); } // 기본적인 논쟁 처리(getopt도 가능하다). 이미지의//첫번째 인수는 높이. 이중으로 하다 sz = (argc > 1) ? atof(argv[1]) : 270; 인트 쉬쉬 = 1; 인트 인쇄물 = 0; // 두 번째 인수: 0/1이 섀도우를 끄거나 켜는 경우 // 인쇄용 파일 이름이라고 가정합니다. 한다면 (argc > 2) { 한다면 (argv[2] =~ "^[01]$") { 쉬쉬 = 아토이(argv[2]); } 또 다른 { 인쇄물 = 1; } } 이미지 yoixlogo = 빌드 Yoix Logo 이미지(sz, 색..블랙입니다., (sz >= 72) & & 쉬쉬); 한다면 (인쇄물) { 개울. 산출량; 한다면 ((산출량 = 열다.(argv[2], "w")) != 특수한 순서) { 부호화 이미지(yoixlogo, "png", 산출량); 가까운.(산출량); } } 또 다른 { JFrame jf = { 인트 눈에 보이는 = 진실의; 치수 크기 = 특수한 순서; 어레이 레이아웃 = { 신규 JPanel { 치수 우선 사이즈 = { 이중으로 하다 폭 = yoixlogo.크기.폭; 이중으로 하다 높이 = yoixlogo.크기.높이; }; 색. 배경 = 색..하얀색; 이미지 배경 이미지 = yoixlogo; 인트 백그라운드 힌트 = 스케일_없음; }, }; }; } 레퍼런스
- ^ "The Yoix® Scripting Language". Internet Archive Wayback Machine. July 1, 2016. Archived from the original on September 21, 2015. Retrieved November 20, 2016.
