<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--
Design by Free CSS Templates
http://www.freecsstemplates.org
Released for free under a Creative Commons Attribution 2.5 License

Name       : Moonlight 
Description: A two-column, fixed-width design with dark color scheme.
Version    : 1.0
Released   : 20110815

-->
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta name="keywords" content="Apache Tcl Webprogramming" />
    <meta name="description" content="Website for the Tcl related projects within the Apache Software Foundation" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>Why Tcl</title>
    <link href="../templates/moonlight/style.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="wrapper">
	<div id="header" class="container">
		<div id="logo">
			<h1><a href="/">Apache Tcl</a></h1>
			<p>Tcl and Apache HTTP webserver Integration</p>
		</div>
		<div id="menu">
			<ul>
                <li>
                    <a href="../index.html">Home</a>
                </li>
				<li><a href="http://tcl.apache.org/rivet/">Rivet</a></li>
				<li><a href="http://tcl.apache.org/websh/">Websh</a></li>
				<!-- li><a href="http://tcl.apache.org/mod_tcl/">mod_tcl</a></li -->
				<li>
                    <a href="about.html">About Us</a></li>
			</ul>
		</div>
	</div>
	<!-- end #header -->
	<div id="page">
		<div id="content">
			<div class="post">
				<h2 class="title">Why Tcl</h2>
				<div style="clear: both;">&nbsp;</div>
				<div class="entry">
					<p>
    <b>Flexible</b>

: Tcl lets you program in the way you
                  want.  For example, you can program in a style that fits
                  your needs, either quick-and-dirty, mixing up HTML and
                  Tcl script to create dynamic web pages fast, or, should
                  you require more organization, for a larger, complex site, Tcl
                  works very well with the 'three tier' model currently in
                  vogue and used by many java systems.
                </p>

<p>
    <b>Multi-Purpose</b>

: Tcl can be used for the web,
                but also for a variety of other tasks.  It was designed
                as a general purpose "Tool Command Language", infact, to
                provide users with a language adept at performing a wide
                range of jobs, including system administration, rapid
                GUI creation with the Tk graphical toolkit, internet
                protocol glue, testing harnesses and so on...  This
                means you can learn one language and use it for many
                things!
                </p>

<p>
    <b>Wide Industry Use</b>

: Tcl has a liberal Open
                Source license (BSD) which has helped spread it within
                the industry, both as a stand-alone product, as well as
                embedded within applications as an extension language.
                It is used by such industry front-runners as Cisco, AOL,
                CNET, and many others.
                </p>

<p>
    <b>Fast, Light</b>

: Tcl is fast, having undergone
                major improvements in the past years.  System resources
                are also impacted lightly - Tcl takes up relatively
                small amounts of disk and memory space.
                </p>

<p>
    <b>Easy</b>

: A simple syntax, and lots of
                documentation, both in print and on the web, make Tcl
                an easy language to learn, both for the experienced
                software professional as well as for students, web
                authors, hobbyists and others, who find that with a
                little bit of learning, they can accomplish a great
                deal.
                </p>

<p>
    <b>Existing Code</b>

: There are thousands upon
                thousands of lines of existing code to be used, either
                as examples to be learned from, to be included
                directly in your code, or as extensions to perform a
                range of common tasks - image manipulation, email,
                XML, SOAP, HTTP, socket programming, etc...
                </p>

<p align="center">
    <b>More <a href="tcl.html">Tcl Information</a>
    </b>
</p>


				</div>
			</div>
			<div style="clear: both;">&nbsp;</div>
		</div>
		<!-- end #content -->
		<div id="sidebar">
			<ul>
				<li id="base">
    <h2>Apache Tcl</h2>
    <ul>
        <li class="navitem">
            <a href="why.html">Why Tcl?</a>
        </li>
        <li class="navitem">
            <a href="contributing.html">Contributing</a>
        </li>
        <li class="navitem">
            <a href="tcl.html">Tcl Information</a>
        </li>
        <li class="navitem">
            <a href="about.html">About Us - Contact</a>
        </li>
    </ul>
</li>
<li id="projects">
    <h2>Projects</h2>
    <ul>
        <li class="navitem">
            <a href="http://tcl.apache.org/rivet/">Rivet</a>
        </li>
        <li class="navitem">
            <a href="http://tcl.apache.org/websh/">Websh</a>
        </li>
    </ul>
</li>
<li id="acknowledgments">
    <h2>Acknowledgments</h2>
    <ul>
        <li class="navitem">
            <a href="http://http://www.apache.org/foundation/thanks.html">ASF Sponsorship</a>
        </li>
    </ul>
</li>

			</ul>
		</div>
		<!-- end #sidebar -->
		<div style="clear: both;">&nbsp;</div>
	</div>
	<!-- end #page -->
</div>
<div id="footer">
	<p>Copyright &copy; 2013 Apache Software Foundation. All rights reserved. Design by <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>.</p>
</div>
<!-- end #footer -->
</body>
</html>

