When comparing Tcl vs Racket, the Slant community recommends Racket for most people. In the question“What is the best programming language to learn first?” Racket is ranked 17th while Tcl is ranked 31st. The most important reason people chose Racket is:
Realm of Racket teaches the big-bang approach for managing world state. It does so by walking the reader through the development of small games. There are few guidebooks that are as useful and entertaining.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Standard library
Unlike *sh Tcl has a rich standard library.
Pro Sane quoting rules
Unlike in sh you don't need to quote your variable substitutions ('"$1"').
Expanding of arguments occurs mostly explicit and if yet expected in-place (e. g. using eval
or subst
) it follows strict and well clear rules.
So exec test $argv
would execute test with single argument.
And appending {*} before $argv
would execute test with all arguments (list expansion).
Pro Cross-platform
With a little care you can have the same script work on Linux, *BSD, OS X and Windows.
Pro Widely available
You can expect a reasonably recent version of Tcl to either installed or available in the repositories of any popular open source *nix.
Pro Everything is a string
Tcl can operate at the same level of abstraction as the POSIX shell, which makes it easier to manipulate the output of other programs.
Pro Tk and Expect
Pro Standalone packages
Tcl enables easy deployment through self-contained binaries known as starpacks.
Pro Rich scripting capabilities on a single line
Want to run something 5 times? Here you go: set i 0; time { puts done-[incr i] } 5
If you need real conditional cycle? Not a problem: for {set ready 0; set i 1} {$i <= 100 && !$ready} {incr i} { if {[exec do-some-thing] eq "ready" } {set ready 1} }
Want to measure performance of something or repeat it max 300 times and not longer than 1 seconds? Very simple: timerate { after 20 } 1000 300
How about notifying yourself when some http-server is back online? Sure thing: while {[catch { close [socket localhost 80] }]} { after 1000 }; puts "\7\7\7ONLINE!"
And you can do it also fully asynchronously using events etc.
Pro Realm of Racket is an excellent entry-level guidebook
Realm of Racket teaches the big-bang approach for managing world state. It does so by walking the reader through the development of small games. There are few guidebooks that are as useful and entertaining.
Pro Racket was designed to teach functional programming from the start
Racket is based on Scheme (LISP Family) and is very similar to Clojure. So there are a ton of (). The reason it is easier to learn is that it is not trying to be "Pure" if there is even such a thing in terms of Functional Programming. The great thing about Racket is it has everything included. You get DrRacket for developing programs. You want to add a picture to your software you can insert pictures. If you want to add libraries just open the package manager. The Syntax is an opinion but it really does feel easier to see what is happening since everything is in brackets)
Racket is a really a Programming Language for making Programming Languages. So there are smaller syntax Racket called Student Racket which makes things easier to pick up.
Pro Free resources to Learn
Includes several free online books and great documentation.
Pro Great RPEL IDEA included Dr. Racket
Pro Active community
Racket has an active community of users/developers that makes it easy to get help when needed.
Pro Syntax fits to functional programming
Although syntax is different from that of mainstream languages, S-expressions are a perfect match to functional programming.
Pro Subtly encourages functional programming
Racket makes it inconvenient to pursue imperative habits while encouraging functional programming by Lisps's syntax. For example, the syntax for defining a function is almost the exact same as defining a variable. In addition, Racket has a strong set of higher-order functions built in to the language.
Pro Easily embeddable
Racket is famously embedded in the game engine underlying Naughty Dog's Uncharted and The Last of Us games, because it proved to be so easy to embed.