Tcl

Tcl 로고

Tcl (원래 "Tool Command Language"에서 왔지만 관례적으로 "TCL"이 아니라 "Tcl"이라고 쓰며 "티클" 또는 "티씨엘"[1]로 발음한다.)은 스크립트 언어로써 존 오스터하우트가 만들었다. 처음에 같이 일하던 프로그래머들이 응용 프로그램에 포함시키기 위한 (조악한) 언어를 직접 만들며 좌절하는 모습을 보고 만들었다고 하지만, Tcl은 빠르게 인기를 얻었다. 비교적 배우기 쉽다고 알려져 있지만 충분히 강력하다. 보통 빠른 프로토타이핑, 스크립트 프로그램, GUI 및 테스팅에 많이 사용된다. 임베디드 플랫폼에서도 광범위하게 사용되며 Tcl 언어 전체 또는 그 작은 일부분만 떼어낸 버전을 이용하기도 한다. 또한 CGIIRC 봇을 만드는 데에도 사용되고 있다.

Tcl과 Tk GUI 툴킷을 묶어서 Tcl/Tk라고 자주 부른다.

특징

Tcl은 아래와 같은 특징이 있다:

  • 언어 구조를 포함해서 모든 것은 명령어이며, 전위 표기법으로 표현한다.
  • 명령어는 가변인자를 받을 수 있다.
  • 모든 것을 동적으로 재정의하고 오버라이드할 수 있다.
  • 코드를 포함한 모든 자료형문자열로 다룰 수 있다.
  • 극히 간단한 문법 규칙.
  • 소켓파일에 대해 이벤트 구동 방식 인터페이스를 가지고 있다. 시간 기반 이벤트 및 사용자 정의 이벤트가 모두 가능하다.
  • 유연한 변수 영역 규칙을 지원해서, 정적 영역 규칙이 기본이지만 uplevel과 upvar는 proc이 둘러싸고있는 함수의 영역까지 작용할 수 있도록 허용한다.
  • 모든 명령어가 실행 후 반환하는 예외 코드를 이용한 간단한 예외 처리
  • Tcl에 정의된 모든 명령어는 잘못된 사용에 대해 의미있는 오류 메시지를 만들어낸다.
  • C, C++, 자바 및 Tcl을 통해 바로 확장할 수 있다.
  • 인터프리터 언어이지만 바이트코드를 이용하여 동적인 수정이 가능한 특성을 유지하면서 속도가 빨라짐.
  • 1999년에 처음 출시한 완전한 유니코드 (3.1) 지원.
  • 플랫폼 독립적: Win32, UNIX, 리눅스, 애플 매킨토시, 등.
  • 윈도(GUI) 인터페이스 Tk와 밀접한 결합.
  • 코드를 관리하기 쉽다. 많은 경우 Tcl 스크립트는 다른 언어로 동일한 기능을 작성했을 때보다 더 작고 읽기 쉬운 코드가 된다.
  • 다양한 목적과 환경에서 사용된다: 텍스트 전용 스크립트 언어, 애플리케이션 프로그램을 위한 GUI 가능한 언어, (서버측 또는 Tclets과 같이 클라이언트측) 웹페이지와 (PostgreSQL과 같이 서버측) 데이터베이스를 위한 임베디드 언어 등.
  • 개발용 버전(예, ActiveState Tcl), tclkit (일종의 실행용 버전, 1 메가바이트밖에 안됨), starpack (단일 실행파일), BSD 라이선스의 자유로이 배포가능한 소스 등 여러가지로 존재한다.

Tcl은 원래 함수형 언어로써 객체 지향 문법을 지원하지는 않았다. 그러나 최근 버전은 XOTcl과 같이 객체 지향 기능을 제공하는 확장을 지원한다. incr Tcl, Snit, 및 STOOOP (simple tcl-only object-oriented programming)와 같은 다른 객체 지향 확장도 존재한다.

Tcl은 고차 함수와 함수 요약이 언어 자체에서 지원되므로 함수형 프로그래밍은 쉽게 가능하지만 그러한 목적으로 많이 쓰이지는 않는다. 아래 예는 쉽게 두 함수를 합성할 수 있음을 보여준다.

proc o {f g x} {$f [$g $x]}

예제

아래 예제는 아무 Tcl 셸에 붙여넣어도 실행 가능한 간단한 코드이다.

수 더하기

방법 (ㄱ) - 'foreach' 반복문을 이용하여 덧셈

set numbers {1 2 3 4 5 6 7 8 9 10}
set result 0
foreach number $numbers {
    set result [expr {$result + $number}]
}
puts $result

방법 (ㄴ) - 'join' 명령을 이용하여 훨씬 더 우아한 방법으로 덧셈

 set numbers {1 2 3 4 5 6 7 8 9 10}
 puts [expr [join $numbers +]]

방법 (ㄷ) - 더하기 명령을 리스트 펼치기 문법과 함께 사용

 namespace import tcl::mathop::+
 set numbers {1 2 3 4 5 6 7 8 9 10}
 puts [+ {*}$numbers]

메아리 서버

이벤트 기반 소켓 처리를 보여주는 잘 동작하는 간단한 예제

#!/usr/bin/env tclsh

# echo server that can handle multiple
# simultaneous connections.

proc newConnection { sock addr port } {

     # client connections will be handled in
     # line-buffered, non-blocking mode
     fconfigure $sock -blocking no -buffering line

     # call handleData when socket is readable
     fileevent $sock readable [ list handleData $sock ]
}

proc handleData { sock } {
     puts -nonewline $sock [ gets $sock ]
     if { [ eof $sock ] } {
        close $sock
     }
}

# handle all connections to port given
# as argument when server was invoked
# by calling newConnection
set port [ lindex $argv 0 ]
socket -server newConnection $port

# enter the event loop by waiting
# on a dummy variable that is otherwise
# unused.
vwait forever

전자 시계

Tk와 timer 이벤트를 이용하는 또다른 예제(A simple A/D clock). 네 줄의 코드로 전자 시계를 만든다.

package require Tk
proc every {ms body} {
    eval $body
    after $ms [list every $ms $body]
}
pack [label .clock -textvar time]
every 1000 {set ::time [clock format [clock seconds] -format %H:%M:%S]} ;# RS

설명: 첫 번째 줄은 Tk 패키지를 불러들인다. (실제로는 4줄에 걸쳐있는) 두 번째 줄은 액션('body')를 매 'ms' 밀리초마다 반복해서 실행하는 명령어 "every"를 정의하고, 세 번째 줄은 변수 'time'에 연동되는 라벨을 만들고 스크린에 출력되도록 한다. 네 번째 줄은 매 초마다 변수 'time'이 형식이 갖춰진 지역 시간으로 갱신되도록 한다.

같이 보기

각주

  1. Tcler's Wiki Tcl vs. TCL Archived 2008년 7월 19일 - 웨이백 머신

외부 링크

Read other articles:

Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada Februari 2023. Latto-latto di Malaysia atau demam mainan latto-latto di Malaysia adalah suatu fenomena sosial budaya yang terjadi pada masyarakat Malaysia terhadap mainan tradisional asal Amerika Serikat, yakni latto-latto dan kaitannya. Fenomena ini dimulai pada pe...

Oncorhynchus gorbuscha Classificação científica Reino: Animalia Filo: Chordata Classe: Actinopterygii Ordem: Salmoniformes Família: Salmonidae Género: Oncorhynchus Espécie: O. gorbuscha Nome binomial Oncorhynchus gorbuscha(Walbaum, 1792) O salmão-rosado ou salmão-rosa (Oncorhynchus gorbucha) é um peixe do género Oncorhynchus.[1] Os jovens salmões-rosados permanecem pouco tempo na água doce, migrando para o mar pouco depois da eclosão. Voltam ao fim de 18 meses para desovar na mes...

Тукціялат. Tuccia Країна Стародавній РимДіяльність весталка  Медіафайли у Вікісховищі Тукція (лат. Tuccia) — давньоримська весталка, імовірно жила в III столітті до н. е. Джованні Баттіста Мороні«Діва-весталка Тукція», біля 1555 Присвячену Тукції історію включив в свою пр�...

У Вікіпедії є статті про інших людей із прізвищем Химич. Химич Юрій Іванович Народження 12 квітня 1928(1928-04-12)Кам'янець-ПодільськийСмерть 23 липня 2003(2003-07-23) (75 років)  КиївКраїна СРСР, УкраїнаЖанр графікаНавчання Київський інженерно-будівельний інститутДіяльність архітек�...

San Xoán de PadernePaderne Parroquia de GaliciaLugar San Xoán de PaderneLocalización de San Xoán de Paderne en España San Xoán de PaderneLocalización de San Xoán de Paderne en La CoruñaCoordenadas 43°17′07″N 8°10′26″O / 43.2852, -8.1738Entidad Parroquia de GaliciaLugar • País  España • Comunidad autónoma Galicia • Provincia La Coruña • Comarca Betanzos • Municipio Paderne • Entidades de población 8Població...

For the song, see Never Say Never (Justin Bieber song). 2011 American filmJustin Bieber: Never Say NeverTheatrical release posterDirected byJon M. ChuProduced by Scooter Braun Justin Bieber Antonio L.A. Reid Usher Raymond IV Dan Cutforth Jane Lipsitz StarringJustin BieberCinematographyReed SmootEdited by Avi Youabian Jay Cassidy Jillian Moul Music byDeborah LurieProductioncompanies Insurge Pictures MTV Films Scooter Braun Films L.A. Reid Media AEG Live Island Records Distributed byParamount P...

This article is about the lake in Ontario. For the lake in Alberta, see Peninsula Lake (Alberta). Peninsula LakeLooking out from Wolf MountainPeninsula LakeLocationMuskoka District Municipality, OntarioCoordinates45°20′N 79°7′W / 45.333°N 79.117°W / 45.333; -79.117Basin countriesCanadaMax. length10.7 km (6.6 mi)Surface area8.688 km2 (868.8 ha; 3.354 sq mi)Max. depth37 m (121 ft)Shore length129.8 km (18.5 mi...

1944 Nazi massacre in Warsaw, Poland Ochota massacrePart of the Warsaw UprisingOne of many memorials commemorating massacre sites in Ochota, located at the corner of Tarczyńska and Daleka Streets (17 civilians were murdered here, after which their bodies were burnt)LocationOchota, WarsawCoordinates52°12′36″N 20°58′16″E / 52.210°N 20.971°E / 52.210; 20.971Date4–25 August 1944TargetPolish civiliansAttack typeMass murders, gang rapes, looting, arsonDeathsAp...

Dysprosium(II) iodide Identifiers CAS Number 36377-94-3 3D model (JSmol) Interactive image ECHA InfoCard 100.151.507 EC Number 622-765-5 PubChem CID 71431174 CompTox Dashboard (EPA) DTXSID20849397 InChI InChI=1S/Dy.2HI/h;2*1H/p-2Key: SSDFPWIJYIKUFK-UHFFFAOYSA-L SMILES [I-].[I-].[Dy+2] Properties Chemical formula DyI2 Molar mass 416.309 g·mol−1 Appearance dark purple-black solid[1] Melting point 659 °C[1] Hazards GHS labelling:[2] Pictograms Si...

De Oude en Nieuwe Struiten is een voormalige Nederlandse gemeente die in 1855 bij Nieuw-Helvoet werd toegevoegd. De naam van het winkelcentrum in Hellevoetsluis genaamd de Struytse Hoeck, de wijk de Struyten en de Struytse Zeedijk herinneren hier nog aan. Oude en Nieuwe Struiten 1697 Zie ook Oude en Nieuwe Struijten (waterschap) Lijst van burgemeesters van Oude en Nieuwe Struiten Afbeeldingen De Struytse Zeedijk Oude en Nieuwe Struiten maakte deel uit van de gemeente Nieuw-Helvoet Wapen Media...

For the Jewish garment, see Kapoteh Traditional North American garment The River Road by Cornelius Krieghoff, 1855 (Three habitants wearing capotes) A capote (French: [kapɔt]) or capot (French: [kapo]) is a long wrap-style wool coat with a hood. From the early days of the North American fur trade, both indigenous peoples and European Canadian settlers fashioned wool blankets into capotes as a means of coping with harsh winters.[1] The garments served as winter outerwe...

Private university in New York City, New York, U.S. This article is about the private institution founded in 1831. For other and similar uses, see University of New York. NYU redirects here. For the district in Japan, see Nyū District, Fukui. For the Elfen Lied character, see List of Elfen Lied characters § Nyu. New York UniversityLatin: Universitas Neo EboracensisFormer nameUniversity of the City of New-York (1831–1896)MottoPerstare et praestare (Latin)Motto in EnglishTo persevere a...

Instrument that makes distant objects appear magnified For other uses, see Telescope (disambiguation). The 100-inch (2.54 m) Hooker reflecting telescope at Mount Wilson Observatory near Los Angeles, USA, used by Edwin Hubble to measure galaxy redshifts and discover the general expansion of the universe. A telescope is a device used to observe distant objects by their emission, absorption, or reflection of electromagnetic radiation.[1] Originally it was an optical instrument using lens...

Questa voce sull'argomento atleti canadesi è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Mohammed Ahmed Nazionalità  Canada Altezza 182 cm Atletica leggera Specialità Mezzofondo Record 1500 m 3'3489 (2020) 3000 m 7'4049 (2017) 3000 m 7'4011 (indoor - 2016) 5000 m 12'4720 (2020) 5000 m 12'5687 (indoor - 2022) 10000 m 26'3414 (2022) Carriera Nazionale 2012- Canada Palmarès Competizione Ori Argen...

Baltic Finnic oral poetry and national epic Runic singers from Ladoga Karelia. From left: Iivana Shemeikka, Iivana Onoila, and Konstantin Kuokka Runic song[a], also referred to as Rune song, Runo song, or Kalevala song, is a form of oral poetry and national epic historically practiced among the Baltic Finnic peoples. It includes the Finnish epic poems Kalevala and Kanteletar, as well as the Estonian Kalevipoeg. Description Runic song is typically monophonic among most Baltic Finnic gr...

This article includes a list of references, related reading, or external links, but its sources remain unclear because it lacks inline citations. Please help to improve this article by introducing more precise citations. (July 2018) (Learn how and when to remove this template message) You can help expand this article with text translated from the corresponding article in Italian. (July 2017) Click [show] for important translation instructions. Machine translation, like DeepL or Google Tr...

1990年アジア競技大会における柔道競技(1990ねんアジアきょうぎたいかいにおけるじゅうどうきょうぎ)は1990年9月28日から10月1日の4日間にわたって、中国の北京で開催された。今大会から女子も実施されることになった[1]。               大会結果 男子 階級 金 銀 銅 60kg以下級 越野忠則 金鐘万 ダシュゴンビン・バトゥルガ パク・ハキョン 65kg以�...

Melodía principal del cuarto concierto de Saint-Saëns. El Concierto para piano n.º 4, en do menor, op. 44, de Camille Saint-Saëns, es el concierto para piano más innovador desde el punto de vista estructural. Fue estrenado el 31 de octubre de 1875, en el Teatro del Châtelet, con el compositor como solista.[1]​ Está dedicado a Antoine Door, profesor de piano en el Conservatorio de Viena. Es, luego del segundo, el concierto para piano más popular de Saint-Saëns. El concierto tien...

Questa voce sull'argomento calciatori rumeni è solo un abbozzo. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. Dan Coe Nazionalità  Romania Altezza 186 cm Peso 82 kg Calcio Ruolo Difensore Termine carriera 1975 Carriera Giovanili 1956-1961 Rapid Bucarest Squadre di club1 1961-1971 Rapid Bucarest202 (9)1971-1973 Anversa37 (5)1973-1975 Oțelul Galați35 (3) Nazionale 1963-1971 Romania41 (2) 1 I du...

2013 video gameCovenant of SolitudeDeveloper(s)Magitec[2]Publisher(s)Kemco[2][3]Platform(s)Google Android, iOSReleaseFebruary 4, 2013[1]Genre(s)RPGMode(s)Single-player Covenant of Solitude is a role-playing game published by Kemco for Android and iOS devices.[4] It is considered one of Kemco's best-looking video games, although the soundtrack and audio were not well received.[3][5] The game is a turn-based RPG, where players assume the r...