Objective-C vs Tcl
When comparing Objective-C vs Tcl, the Slant community recommends Tcl for most people. In the question“What is the best programming language to learn first?” Tcl is ranked 31st while Objective-C is ranked 74th. The most important reason people chose Tcl is:
Unlike *sh Tcl has a rich standard library.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Well Documented
Objective-C's documentation exists on Apple's website, and explains language features in detail.
Pro Develop Apple applications
Similar to C# and Java, but used to develop native applications for Apple hardware.
Pro Objective-C supports an open style of dynamic binding
A style that can accommodate a simple architecture for interactive user interfaces.
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.
Cons
Con Odd Syntax
Objective C's syntax is very alien to other languages. Learning Objective-C first will fail to expose you to a syntax style that would be relatively familiar in almost any other language.
Con Might as well learn Swift
Swift works almost anywhere Objective C does, and it was designed to replace Objective C.
Con One of the biggest mistakes ever.
It was meant to be one of the C-style languages, but has such bad syntax design it actually is the odd duck.
Con Apple-centric and obsolete
Con Tied into Apple's eco-system.
Con More Technical
To be able to do basic tasks in Objective-C requires a strong understanding of programming.
Con Requires Understanding of C-language.
Objective-C is built on top of C, and as such, requires at least a basic understanding of how to program in C.