source: general/prog/other-tools.xml@ b2a5557

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 6.2 6.2.0 6.2.0-rc1 6.2.0-rc2 6.3 6.3-rc1 6.3-rc2 6.3-rc3 7.10 7.4 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since b2a5557 was b2a5557, checked in by Randy McMurchy <randy@…>, 18 years ago

Added the Io programming language to Chapter 12 - 'Other Programming Tools'

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@5852 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 95.4 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
3 "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="other-tools" xreflabel="Other Programming Tools">
9 <?dbhtml filename="other-tools.html"?>
10
11 <sect1info>
12 <othername>$LastChangedBy$</othername>
13 <date>$Date$</date>
14 </sect1info>
15
16 <title>Other Programming Tools</title>
17
18 <indexterm zone="other-tools">
19 <primary sortas="a-Other-Programming-Tools">Other Programming Tools</primary>
20 </indexterm>
21
22 <sect2 role="introduction">
23 <title>Introduction</title>
24
25 <para>This section is provided to show you some additional programming
26 tools for which instructions have not yet been created in the book or for
27 those that are not appropriate for the book. Note that these packages may
28 not have been tested by the BLFS team, but their mention here is meant to
29 be a convenient source of additional information.</para>
30
31 </sect2>
32
33 <sect2>
34 <title>Programming Frameworks, Languages and Compilers</title>
35
36 <!-- This is a template for additions to this page. Cut 18 lines and
37 paste them in alphabetical order for the new package. '18dd' and
38 move down to the alpha order and 'p' works great (using vi).
39
40 <sect3 role="package">
41 <title></title>
42
43 <para><application></application> This is the description.</para>
44
45 <itemizedlist spacing="compact">
46 <listitem>
47 <para>Project Home Page: <ulink
48 url=""/></para>
49 </listitem>
50 <listitem>
51 <para>Download Location: <ulink
52 url=""/></para>
53 </listitem>
54 </itemizedlist>
55
56 </sect3>
57
58 -->
59
60 <sect3 role="package">
61 <title>A+</title>
62
63 <para><application>A+</application> is a powerful and efficient
64 programming language. It is freely available under the GNU General
65 Public License. It embodies a rich set of functions and operators, a
66 modern graphical user interface with many widgets and automatic
67 synchronization of widgets and variables, asynchronous execution of
68 functions associated with variables and events, dynamic loading of user
69 compiled subroutines, and many other features. Execution is by a rather
70 efficient interpreter. <application>A+</application> was created at
71 Morgan Stanley. Primarily used in a computationally-intensive business
72 environment, many critical applications written in
73 <application>A+</application> have withstood the demands of real world
74 developers over many years. Written in an interpreted language,
75 <application>A+</application> applications tend to be portable.</para>
76
77 <itemizedlist spacing="compact">
78 <listitem>
79 <para>Project Home Page: <ulink
80 url="http://www.aplusdev.org/"/></para>
81 </listitem>
82 <listitem>
83 <para>Download Location: <ulink
84 url="http://www.aplusdev.org/Download/index.html"/></para>
85 </listitem>
86 </itemizedlist>
87
88 </sect3>
89
90 <sect3 role="package">
91 <title>ABC</title>
92
93 <para><application>ABC</application> is an interactive programming
94 language and environment for personal computing, originally intended as a
95 good replacement for BASIC. It was designed by first doing a task
96 analysis of the programming task. <application>ABC</application> is easy
97 to learn (an hour or so for someone who has already programmed), and yet
98 easy to use. Originally intended as a language for beginners, it has
99 evolved into a powerful tool for beginners and experts alike. Some
100 features of the language include: a powerful collection of only five data
101 types that easily combines strong typing, yet without declarations,
102 no limitations (such as max int), apart from sheer exhaustion of memory
103 refinements to support top-down programming, nesting by indentation and
104 programs typically are one fourth or one fifth the size of the equivalent
105 Pascal or C program. </para>
106
107 <itemizedlist spacing="compact">
108 <listitem>
109 <para>Project Home Page: <ulink
110 url="http://homepages.cwi.nl/~steven/abc/"/></para>
111 </listitem>
112 <listitem>
113 <para>Download Location: <ulink
114 url="http://homepages.cwi.nl/~steven/abc/implementations.html"/></para>
115 </listitem>
116 </itemizedlist>
117
118 </sect3>
119
120 <sect3 role="package">
121 <title>ALF</title>
122
123 <para><application>ALF</application> is a language which combines
124 functional and logic programming techniques. The foundation of
125 <application>ALF</application> is Horn clause logic with equality which
126 consists of predicates and Horn clauses for logic programming, and
127 functions and equations for functional programming. The
128 <application>ALF</application> system is an efficient implementation of
129 the combination of resolution, narrowing, rewriting and rejection.
130 Similarly to Prolog, <application>ALF</application> uses a backtracking
131 strategy corresponding to a depth-first search in the derivation
132 tree.</para>
133
134 <itemizedlist spacing="compact">
135 <listitem>
136 <para>Project Home Page: <ulink
137 url="http://www.informatik.uni-kiel.de/~mh/systems/ALF.html"/></para>
138 </listitem>
139 <listitem>
140 <para>Download Location: <ulink
141 url="http://www.informatik.uni-kiel.de/~mh/systems/ALF/"/></para>
142 </listitem>
143 </itemizedlist>
144
145 </sect3>
146
147 <sect3 role="package">
148 <title>ASM</title>
149
150 <para><application>ASM</application> is a Java bytecode manipulation
151 framework. It can be used to dynamically generate stub classes or other
152 proxy classes, directly in binary form, or to dynamically modify
153 classes at load time, i.e., just before they are loaded into the Java
154 Virtual Machine. <application>ASM</application> offers similar
155 functionalities as BCEL or SERP, but is much smaller (33KB instead of
156 350KB for BCEL and 150KB for SERP) and faster than these tools (the
157 overhead of a load time class transformation is of the order of 60% with
158 <application>ASM</application>, 700% or more with BCEL, and 1100% or
159 more with SERP). Indeed <application>ASM</application> was designed to be
160 used in a dynamic way (though it works statically as well) and was
161 therefore designed and implemented to be as small and as fast as
162 possible.</para>
163
164 <itemizedlist spacing="compact">
165 <listitem>
166 <para>Project Home Page: <ulink
167 url="http://asm.objectweb.org/"/></para>
168 </listitem>
169 <listitem>
170 <para>Download Location: <ulink
171 url="http://forge.objectweb.org/projects/asm/"/></para>
172 </listitem>
173 </itemizedlist>
174
175 </sect3>
176
177 <sect3 role="package">
178 <title>BCPL</title>
179
180 <para><application>BCPL</application> is a simple typeless language that
181 was designed in 1966 by Martin Richards and implemented for the first
182 time at MIT in the Spring of 1967.</para>
183
184 <itemizedlist spacing="compact">
185 <listitem>
186 <para>Project Home Page: <ulink
187 url="http://www.cl.cam.ac.uk/users/mr/BCPL.html"/></para>
188 </listitem>
189 <listitem>
190 <para>Download Location: <ulink
191 url="http://www.cl.cam.ac.uk/users/mr/BCPL/"/></para>
192 </listitem>
193 </itemizedlist>
194
195 </sect3>
196
197 <sect3 role="package">
198 <title>BETA</title>
199
200 <para><application>BETA</application> is developed within the
201 Scandinavian School of object-orientation, where the first
202 object-oriented language, Simula, was developed.
203 <application>BETA</application> is a modern language in the Simula
204 tradition. The resulting language is smaller than Simula in spite of
205 being considerably more expressive. <application>BETA</application> is a
206 strongly typed language like Simula, Eiffel and C++, with most type
207 checking being carried out at compile-time. It is well known that it is
208 not possible to obtain all type checking at compile time without
209 sacrificing the expressiveness of the language.
210 <application>BETA</application> has optimum balance between compile-time
211 type checking and run-time type checking.</para>
212
213 <itemizedlist spacing="compact">
214 <listitem>
215 <para>Project Home Page: <ulink
216 url="http://www.daimi.au.dk/~beta/"/></para>
217 </listitem>
218 <listitem>
219 <para>Download Location: <ulink
220 url="ftp://ftp.daimi.au.dk/pub/beta/"/></para>
221 </listitem>
222 </itemizedlist>
223
224 </sect3>
225
226 <sect3 role="package">
227 <title>&lt;bigwig&gt;</title>
228
229 <para><application>&lt;bigwig&gt;</application> is a high-level
230 programming language for developing interactive Web services. Programs
231 are compiled into a conglomerate of lower-level technologies such as C
232 code, HTTP, HTML, JavaScript, and SSL, all running on top of a runtime
233 system based on an Apache Web server module. It is a descendant of the
234 Mawl project but is a completely new design and implementation with
235 vastly expanded ambitions. The <application>&lt;bigwig&gt;</application>
236 language is really a collection of tiny domain-specific languages
237 focusing on different aspects of interactive Web services. These
238 contributing languages are held together by a C-like skeleton language.
239 Thus, <application>&lt;bigwig&gt;</application> has the look and feel of
240 C-programs but with special data and control structures.</para>
241
242 <itemizedlist spacing="compact">
243 <listitem>
244 <para>Project Home Page: <ulink
245 url="http://www.brics.dk/bigwig/"/></para>
246 </listitem>
247 <listitem>
248 <para>Download Location: <ulink
249 url="http://www.brics.dk/bigwig/download/"/></para>
250 </listitem>
251 </itemizedlist>
252
253 </sect3>
254
255 <sect3 role="package">
256 <title>Byte Code Engineering Library (BCEL)</title>
257
258 <para><application>BECL</application> is intended to give users a
259 convenient possibility to analyze, create, and manipulate (binary) Java
260 class files (those ending with
261 <filename class='extension'>.class</filename>). Classes are represented
262 by objects which contain all the symbolic information of the given class:
263 methods, fields and byte code instructions, in particular. Such objects
264 can be read from an existing file, be transformed by a program (e.g., a
265 class loader at run-time) and dumped to a file again. An even more
266 interesting application is the creation of classes from scratch at
267 run-time. The Byte Code Engineering Library may be also useful if you
268 want to learn about the Java Virtual Machine (JVM) and the format of Java
269 <filename class='extension'>.class</filename> files.
270 <application>BCEL</application> is already being used successfully in
271 several projects such as compilers, optimizers, obsfuscators, code
272 generators and analysis tools.</para>
273
274 <itemizedlist spacing="compact">
275 <listitem>
276 <para>Project Home Page: <ulink
277 url="http://jakarta.apache.org/bcel/index.html"/></para>
278 </listitem>
279 <listitem>
280 <para>Download Location: <ulink
281 url="http://jakarta.apache.org/site/downloads/downloads_bcel.cgi/"/></para>
282 </listitem>
283 </itemizedlist>
284
285 </sect3>
286
287 <sect3 role="package">
288 <title>Bigloo</title>
289
290 <para><application>Bigloo</application> is a Scheme implementation
291 devoted to one goal: enabling Scheme based programming style where C(++)
292 is usually required. <application>Bigloo</application> attempts to make
293 Scheme practical by offering features usually presented by traditional
294 programming languages but not offered by Scheme and functional
295 programming. Bigloo compiles Scheme modules and delivers small and fast
296 stand-alone binary executables. It enables full connections between
297 Scheme and C programs, between Scheme and Java programs, and between
298 Scheme and C# programs.</para>
299
300 <itemizedlist spacing="compact">
301 <listitem>
302 <para>Project Home Page: <ulink
303 url="http://www-sop.inria.fr/mimosa/fp/Bigloo/"/></para>
304 </listitem>
305 <listitem>
306 <para>Download Location: <ulink
307 url="ftp://ftp-sop.inria.fr/mimosa/fp/Bigloo/"/></para>
308 </listitem>
309 </itemizedlist>
310
311 </sect3>
312
313 <sect3 role="package">
314 <title>C--</title>
315
316 <para><application>C--</application> is a portable assembly language that
317 can be generated by a front end and implemented by any of several code
318 generators. It serves as an interface between high-level compilers and
319 retargetable, optimizing code generators. Authors of front ends and code
320 generators can cooperate easily.</para>
321
322 <itemizedlist spacing="compact">
323 <listitem>
324 <para>Project Home Page: <ulink
325 url="http://www.cminusminus.org/"/></para>
326 </listitem>
327 <listitem>
328 <para>Download Location: <ulink
329 url="http://www.cminusminus.org/code.html"/></para>
330 </listitem>
331 </itemizedlist>
332
333 </sect3>
334
335 <sect3 role="package">
336 <title>Caml</title>
337
338 <para><application>Caml</application> is a general-purpose programming
339 language, designed with program safety and reliability in mind. It is
340 very expressive, yet easy to learn and use.
341 <application>Caml</application> supports functional, imperative, and
342 object-oriented programming styles. It has been developed and distributed
343 by INRIA, France's national research institute for computer science,
344 since 1985. The Objective Caml system is the main implementation of the
345 <application>Caml</application> language. It features a powerful module
346 system and a full-fledged object-oriented layer. It comes with a
347 native-code compiler that supports numerous architectures, for high
348 performance; a bytecode compiler, for increased portability; and an
349 interactive loop, for experimentation and rapid development.</para>
350
351 <itemizedlist spacing="compact">
352 <listitem>
353 <para>Project Home Page: <ulink
354 url="http://caml.inria.fr/"/></para>
355 </listitem>
356 <listitem>
357 <para>Download Location: <ulink
358 url="http://caml.inria.fr/pub/distrib/"/></para>
359 </listitem>
360 </itemizedlist>
361
362 </sect3>
363
364 <sect3 role="package">
365 <title>Cayenne</title>
366
367 <para><application>Cayenne</application> is a simple(?) functional
368 language with a powerful type system. The basic types are functions,
369 products, and sums. Functions and products use dependent types to gain
370 additional power. There are very few building blocks in the language, but
371 a lot of <quote>syntactic sugar</quote> to make it more readable. There
372 is no separate module language in <application>Cayenne</application>
373 since the dependent types allow the normal expression language to be used
374 at the module level as well. The design of
375 <application>Cayenne</application> has been heavily influenced by
376 <application>Haskell</application> and constructive type theory and with
377 some things borrowed from Java. The drawback of such a powerful type
378 system is that the type checking becomes undecidable.</para>
379
380 <itemizedlist spacing="compact">
381 <listitem>
382 <para>Project Home Page: <ulink
383 url="http://www.cs.chalmers.se/~augustss/cayenne/"/></para>
384 </listitem>
385 <listitem>
386 <para>Download Location: <ulink
387 url="http://www.cs.chalmers.se/~augustss/cayenne/get.html"/></para>
388 </listitem>
389 </itemizedlist>
390
391 </sect3>
392
393 <sect3 role="package">
394 <title>Ch</title>
395
396 <para><application>Ch</application> is an embeddable C/C++ interpreter
397 for cross-platform scripting, shell programming, 2D/3D plotting,
398 numerical computing, and embedded scripting.</para>
399
400 <itemizedlist spacing="compact">
401 <listitem>
402 <para>Project Home Page: <ulink
403 url="http://www.softintegration.com/"/></para>
404 </listitem>
405 <listitem>
406 <para>Download Location: <ulink
407 url="http://www.softintegration.com/products/chstandard/download/"/></para>
408 </listitem>
409 </itemizedlist>
410
411 </sect3>
412
413 <sect3 role="package">
414 <title>Clean</title>
415
416 <para><application>Clean</application> is a general purpose,
417 state-of-the-art, pure and lazy functional programming language designed
418 for making real-world applications. <application>Clean</application> is
419 the only functional language in the world which offers uniqueness typing.
420 This type system makes it possible in a pure functional language to
421 incorporate destructive updates of arbitrary data structures (including
422 arrays) and to make direct interfaces to the outside imperative world.
423 The type system makes it possible to develop efficient
424 applications.</para>
425
426 <itemizedlist spacing="compact">
427 <listitem>
428 <para>Project Home Page: <ulink
429 url="http://www.cs.ru.nl/~clean/"/></para>
430 </listitem>
431 <listitem>
432 <para>Download Location: <ulink
433 url="http://www.cs.ru.nl/~clean/Download/download.html"/></para>
434 </listitem>
435 </itemizedlist>
436
437 </sect3>
438
439 <sect3 role="package">
440 <title>CORN</title>
441
442 <para><application>CORN</application> is designed for modeling
443 concurrency and advanced computation. It provides lazy evaluation between
444 concurrently worked threads, with object-oriented and functional style of
445 semantic. This language can be also used for parallel computation.</para>
446
447 <itemizedlist spacing="compact">
448 <listitem>
449 <para>Project Home Page: <ulink
450 url="http://corn.telefonia.pl/"/></para>
451 </listitem>
452 <listitem>
453 <para>Download Location: <ulink
454 url="http://corn.telefonia.pl/download/download.html"/></para>
455 </listitem>
456 </itemizedlist>
457
458 </sect3>
459
460 <sect3 role="package">
461 <title>Cyclone</title>
462
463 <para><application>Cyclone</application> is a programming language based
464 on C that is safe, meaning that it rules out programs that have buffer
465 overflows, dangling pointers, format string attacks, and so on.
466 High-level, type-safe languages, such as Java, Scheme, or ML also provide
467 safety, but they don't give the same control over data representations
468 and memory management that C does (witness the fact that the run-time
469 systems for these languages are usually written in C.) Furthermore,
470 porting legacy C code to these languages or interfacing with legacy C
471 libraries is a difficult and error-prone process. The goal of
472 <application>Cyclone</application> is to give programmers the same
473 low-level control and performance of C without sacrificing safety, and to
474 make it easy to port or interface with legacy C code.</para>
475
476 <itemizedlist spacing="compact">
477 <listitem>
478 <para>Project Home Page: <ulink
479 url="http://www.research.att.com/projects/cyclone/"/></para>
480 </listitem>
481 <listitem>
482 <para>Download Location: <ulink
483 url="http://www.eecs.harvard.edu/~greg/cyclone/software/"/></para>
484 </listitem>
485 </itemizedlist>
486
487 </sect3>
488
489 <sect3 role="package">
490 <title>D</title>
491
492 <para><application>D</application> is a general purpose systems and
493 applications programming language. It is a higher level language than
494 C++, but retains the ability to write high performance code and interface
495 directly with the operating system APIs and with hardware.
496 <application>D</application> is well suited to writing medium to large
497 scale million line programs with teams of developers. It is easy to
498 learn, provides many capabilities to aid the programmer, and is well
499 suited to aggressive compiler optimization technology.
500 <application>D</application> is not a scripting language, nor an
501 interpreted language. It doesn't come with a VM, a religion, or an
502 overriding philosophy. It's a practical language for practical
503 programmers who need to get the job done quickly, reliably, and leave
504 behind maintainable, easy to understand code.
505 <application>D</application> is the culmination of decades of experience
506 implementing compilers for many diverse languages, and attempting to
507 construct large projects using those languages. It draws inspiration from
508 those other languages (most especially C++) and tempers it with
509 experience and real world practicality.</para>
510
511 <itemizedlist spacing="compact">
512 <listitem>
513 <para>Project Home Page: <ulink
514 url="http://www.digitalmars.com/d/"/></para>
515 </listitem>
516 <listitem>
517 <para>Download Location: <ulink
518 url="ftp://ftp.digitalmars.com/"/></para>
519 </listitem>
520 </itemizedlist>
521
522 </sect3>
523
524 <sect3 role="package">
525 <title>DMDScript</title>
526
527 <para><application>DMDScript</application> is Digital Mars'
528 implementation of the ECMA 262 scripting language. Netscape's
529 implementation is called JavaScript, Microsoft's implementation is
530 called JScript. <application>DMDScript</application> is much faster
531 than other implementations, which you can verify with the included
532 benchmark.</para>
533
534 <itemizedlist spacing="compact">
535 <listitem>
536 <para>Project Home Page: <ulink
537 url="http://www.digitalmars.com/dscript/index.html"/></para>
538 </listitem>
539 <listitem>
540 <para>Download Location: <ulink
541 url="ftp://ftp.digitalmars.com/"/></para>
542 </listitem>
543 </itemizedlist>
544
545 </sect3>
546
547 <sect3 role="package">
548 <title>DotGNU Portable.NET</title>
549
550 <para><application>DotGNU Portable.NET</application> goal is to build a
551 suite of free software tools to build and execute .NET applications,
552 including a C# compiler, assembler, disassembler, and runtime engine.
553 While the initial target platform was GNU/Linux, it is also known to run
554 under Windows, Solaris, NetBSD, FreeBSD, and MacOS X. The runtime engine
555 has been tested on the x86, PowerPC, ARM, Sparc, PARISC, s390, Alpha, and
556 IA-64 processors. <application>DotGNU Portable.NET</application> is part
557 of the DotGNU project, built in accordance with the requirements of the
558 GNU Project. DotGNU Portable.NET is focused on compatibility with the
559 ECMA specifications for CLI. There are other projects under the DotGNU
560 meta-project to build other necessary pieces of infrastructure, and to
561 explore non-CLI approaches to virtual machine implementation.</para>
562
563 <itemizedlist spacing="compact">
564 <listitem>
565 <para>Project Home Page: <ulink
566 url="http://www.southern-storm.com.au/portable_net.html"/></para>
567 </listitem>
568 <listitem>
569 <para>Download Location: <ulink
570 url="http://www.southern-storm.com.au/portable_net.html#download"/></para>
571 </listitem>
572 </itemizedlist>
573
574 </sect3>
575
576 <sect3 role="package">
577 <title>Dylan</title>
578
579 <para><application>Dylan</application> is an advanced, object-oriented,
580 dynamic language which supports rapid program development. When needed,
581 programs can be optimized for more efficient execution by supplying more
582 type information to the compiler. Nearly all entities in
583 <application>Dylan</application> (including functions, classes, and basic
584 data types such as integers) are first class objects. Additionally,
585 <application>Dylan</application> supports multiple inheritance,
586 polymorphism, multiple dispatch, keyword arguments, object introspection,
587 macros, and many other advanced features... --Peter Hinely.</para>
588
589 <itemizedlist spacing="compact">
590 <listitem>
591 <para>Project Home Page: <ulink
592 url="http://www.gwydiondylan.org/"/></para>
593 </listitem>
594 <listitem>
595 <para>Download Location: <ulink
596 url="http://www.gwydiondylan.org/downloading.phtml"/></para>
597 </listitem>
598 </itemizedlist>
599
600 </sect3>
601
602 <sect3 role="package">
603 <title>E</title>
604
605 <para><application>E</application> is a secure distributed Java-based
606 pure-object platform and p2p scripting language. It has two parts: ELib
607 and the <application>E</application> Language. Elib provides the stuff
608 that goes on between objects. As a pure-Java library, ELib provides for
609 inter-process capability-secure distributed programming. Its
610 cryptographic capability protocol enables mutually suspicious Java
611 processes to cooperate safely, and its event-loop concurrency and promise
612 pipelining enable high performance deadlock free distributed pure-object
613 computing. The <application>E</application> Language can be used to
614 express what happens within an object. It provides a convenient and
615 familiar notation for the ELib computational model, so you can program
616 in one model rather than two. Under the covers, this notation expands
617 into Kernel-E, a minimalist lambda-language much like Scheme or
618 Smalltalk. Objects written in the <application>E</application> language
619 are only able to interact with other objects according to ELib's
620 semantics, enabling object granularity intra-process security, including
621 the ability to safely run untrusted mobile code (such as caplets).</para>
622
623 <itemizedlist spacing="compact">
624 <listitem>
625 <para>Project Home Page: <ulink
626 url="http://www.erights.org/"/></para>
627 </listitem>
628 <listitem>
629 <para>Download Location: <ulink
630 url="http://www.erights.org/download/"/></para>
631 </listitem>
632 </itemizedlist>
633
634 </sect3>
635
636 <sect3 role="package">
637 <title>elastiC</title>
638
639 <para><application>elastiC</application> is a portable high-level
640 object-oriented interpreted language with a C like syntax. Its main
641 characteristics are: open source, interpreted, has portable bytecode
642 compilation, dynamic typing, automatic real very fast garbage collection,
643 object oriented with meta-programming support (a la Smalltalk),
644 functional programming support (Scheme-like closures with lexical
645 scoping, and eval-like functionality), hierarchical namespaces, a rich
646 set of useful built-in types (dynamic arrays, dictionaries, symbols,
647 ...), extensibile with C (you can add functions, types, classes, methods,
648 packages, ...), embeddable in C. <application>elastiC</application> has
649 been strongly influenced by C, Smalltalk, Scheme and Python and tries to
650 merge the best characteristics of all these languages, while still
651 coherently maintaining its unique personality.</para>
652
653 <itemizedlist spacing="compact">
654 <listitem>
655 <para>Project Home Page: <ulink
656 url="http://www.elasticworld.org/"/></para>
657 </listitem>
658 <listitem>
659 <para>Download Location: <ulink
660 url="http://www.elasticworld.org/download.html"/></para>
661 </listitem>
662 </itemizedlist>
663
664 </sect3>
665
666 <sect3 role="package">
667 <title>Erlang/OTP</title>
668
669 <para><application>Erlang/OTP</application> is a development environment
670 based on Erlang. Erlang is a programming language which has many features
671 more commonly associated with an operating system than with a programming
672 language: concurrent processes, scheduling, memory management,
673 distribution, networking, etc. The initial open-source Erlang release
674 contains the implementation of Erlang, as well as a large part of
675 Ericsson's middleware for building distributed high-availability systems.
676 Erlang is characterized by the following features: robustness, soft
677 real-time, hot code upgrades and incremental code loading.</para>
678
679 <itemizedlist spacing="compact">
680 <listitem>
681 <para>Project Home Page: <ulink
682 url="http://www.erlang.org/"/></para>
683 </listitem>
684 <listitem>
685 <para>Download Location: <ulink
686 url="http://www.erlang.org/download.html"/></para>
687 </listitem>
688 </itemizedlist>
689
690 </sect3>
691
692 <sect3 role="package">
693 <title>Euphoria</title>
694
695 <para><application>Euphoria</application> is a simple, flexible, and
696 easy-to-learn programming language. It lets you quickly and easily
697 develop programs for Windows, DOS, Linux and FreeBSD. Euphoria was first
698 released in 1993. Since then Rapid Deployment Software has been steadily
699 improving it with the help of a growing number of enthusiastic users.
700 Although <application>Euphoria</application> provides subscript checking,
701 uninitialized variable checking and numerous other run-time checks, it is
702 extremely fast. People have used it to develop high-speed DOS games,
703 Windows GUI programs, and Linux X Windows programs. It is also very
704 useful for CGI (Web-based) programming.</para>
705
706 <itemizedlist spacing="compact">
707 <listitem>
708 <para>Project Home Page: <ulink
709 url="http://www.rapideuphoria.com/"/></para>
710 </listitem>
711 <listitem>
712 <para>Download Location: <ulink
713 url="http://www.rapideuphoria.com/v20.htm"/></para>
714 </listitem>
715 </itemizedlist>
716
717 </sect3>
718
719 <sect3 role="package">
720 <title>Felix</title>
721
722 <para><application>Felix</application> is an advanced Algol like
723 procedural programming language with a strong functional subsystem. It
724 features ML style static typing, first class functions, pattern matching,
725 garabge collection, polymorphism, and has built in support for high
726 performance microthreading, regular expressions and context free parsing.
727 The system provides a scripting harness so the language can be used like
728 other scripting languages such as Python and Perl, but underneath it
729 generates native code to obtain high performance. A key feature of the
730 system is that it uses the C/C++ object model, and provides an advanced
731 binding sublanguage to support integration with C/C++ at both the source
732 and object levels, both for embedding C/C++ data types and functions into
733 <application>Felix</application>, and for embedding
734 <application>Felix</application> into exitsing C++ architectures. The
735 <application>Felix</application> compiler is written in Objective Caml,
736 and generates ISO C++ which should compile on any platform.</para>
737
738 <itemizedlist spacing="compact">
739 <listitem>
740 <para>Project Home Page: <ulink
741 url="http://felix.sourceforge.net/"/></para>
742 </listitem>
743 <listitem>
744 <para>Download Location: <ulink
745 url="http://felix.sourceforge.net/current/www/download.html"/></para>
746 </listitem>
747 </itemizedlist>
748
749 </sect3>
750
751 <sect3 role="package">
752 <title>ferite</title>
753
754 <para><application>ferite</application> is a scripting language and
755 engine all in one managable chunk. It is designed to be easily extended
756 in terms of API, and to be used within other applications making them
757 more configurable and useful to the end user. It has a syntax similiar to
758 a number of other langauges but remains clean and its own
759 language.</para>
760
761 <itemizedlist spacing="compact">
762 <listitem>
763 <para>Project Home Page: <ulink
764 url="http://www.ferite.org/"/></para>
765 </listitem>
766 <listitem>
767 <para>Download Location: <ulink
768 url="http://www.ferite.org/download.html"/></para>
769 </listitem>
770 </itemizedlist>
771
772 </sect3>
773
774 <sect3 role="package">
775 <title>Forth</title>
776
777 <para><application>Forth</application> is a stack-based, extensible
778 language without type-checking. It is probably best known for its
779 "reverse Polish" (postfix) arithmetic notation, familiar to users of
780 Hewlett-Packard calculators. <application>Forth</application> is a
781 real-time programming language originally developed to control
782 telescopes. <application>Forth</application> has many unique features
783 and applications: it can compile itself into a new compiler,
784 reverse-polish coding, edit time error checking and compiling (similiar
785 to BASIC), extremely efficient thread based language, can be used to
786 debug itself, extensible; thus can become what ever you need it to be.
787 The links below lead to the website of the Forth Interest Group (FIG),
788 a world-wide, non-profit organization for education in and the promotion
789 of the <application>Forth</application> computer language. Another
790 worthwhile website dedicated to the <application>Forth</application>
791 community is <ulink url="http://wiki.forthfreak.net/"/>.</para>
792
793 <itemizedlist spacing="compact">
794 <listitem>
795 <para>Project Home Page: <ulink
796 url="http://www.forth.org/"/></para>
797 </listitem>
798 <listitem>
799 <para>Download Location: <ulink
800 url="http://www.forth.org/compilers.html"/></para>
801 </listitem>
802 </itemizedlist>
803
804 </sect3>
805
806 <sect3 role="package">
807 <title>GNU Smalltalk</title>
808
809 <para><application>GNU Smalltalk</application> is a free implementation
810 of the Smalltalk-80 language which runs on most versions on Unix and, in
811 general, everywhere you can find a POSIX-compliance library. An uncommon
812 feature of it is that it is well-versed to scripting tasks and headless
813 processing. See <ulink
814 url="http://www.gnu.org/software/smalltalk/gst-manual/gst_1.html#SEC1"/>
815 for a more detailed explanation of
816 <application>GNU Smalltalk</application>.</para>
817
818 <itemizedlist spacing="compact">
819 <listitem>
820 <para>Project Home Page: <ulink
821 url="http://www.gnu.org/software/smalltalk/"/></para>
822 </listitem>
823 <listitem>
824 <para>Download Location: <ulink
825 url="http://ftp.gnu.org/gnu/smalltalk/"/></para>
826 </listitem>
827 </itemizedlist>
828
829 </sect3>
830
831 <sect3 role="package">
832 <title>Haskell</title>
833
834 <para>Haskell is a computer programming language. In particular, it is a
835 polymorphicly typed, lazy, purely functional language, quite different
836 from most other programming languages. The language is named for Haskell
837 Brooks Curry, whose work in mathematical logic serves as a foundation for
838 functional languages. Haskell is based on lambda calculus. There are many
839 implementations of Haskell, among them:</para>
840
841 <itemizedlist spacing="compact">
842 <listitem>
843 <para>GHC: <ulink
844 url="http://www.haskell.org/ghc/"/></para>
845 </listitem>
846 <listitem>
847 <para>HBC: <ulink
848 url="http://www.cs.chalmers.se/~augustss/hbc/hbc.html"/></para>
849 </listitem>
850 <listitem>
851 <para>Helium: <ulink
852 url="http://www.cs.uu.nl/helium/"/></para>
853 </listitem>
854 <listitem>
855 <para>Hugs: <ulink
856 url="http://www.haskell.org/hugs/"/></para>
857 </listitem>
858 <listitem>
859 <para>nhc98: <ulink
860 url="http://www.haskell.org/nhc98/"/></para>
861 </listitem>
862 </itemizedlist>
863
864 </sect3>
865
866 <sect3 role="package">
867 <title>HLA (High Level Assembly)</title>
868
869 <para>The <application>HLA</application> language was developed as a tool
870 to help teach assembly language programming and machine organization to
871 University students at the University of California, Riverside. The basic
872 idea was to teach students assembly language programming by leveraging
873 their knowledge of high level languages like C/C++ and Pascal/Delphi. At
874 the same time, <application>HLA</application> was designed to allow
875 advanced assembly language programmers write more readable and more
876 powerful assembly language code.</para>
877
878 <itemizedlist spacing="compact">
879 <listitem>
880 <para>Project Home Page: <ulink
881 url="http://webster.cs.ucr.edu/AsmTools/HLA/"/></para>
882 </listitem>
883 <listitem>
884 <para>Download Location: <ulink
885 url="http://webster.cs.ucr.edu/AsmTools/HLA/dnld.html"/></para>
886 </listitem>
887 </itemizedlist>
888
889 </sect3>
890
891 <sect3 role="package">
892 <title>Icon</title>
893
894 <para><application>Icon</application> is a high-level, general-purpose
895 programming language with a large repertoire of features for processing
896 data structures and character strings. It is an imperative, procedural
897 language with a syntax reminiscent of C and Pascal, but with semantics at
898 a much higher level.</para>
899
900 <itemizedlist spacing="compact">
901 <listitem>
902 <para>Project Home Page: <ulink
903 url="http://www.cs.arizona.edu/icon/"/></para>
904 </listitem>
905 <listitem>
906 <para>Download Location: <ulink
907 url="ftp://ftp.cs.arizona.edu/icon/"/></para>
908 </listitem>
909 </itemizedlist>
910
911 </sect3>
912
913 <sect3 role="package">
914 <title>Io</title>
915
916 <para><application>Io</application> is a small, prototype-based
917 programming language. The ideas in <application>Io</application> are
918 mostly inspired by <application>Smalltalk</application> (all values are
919 objects), <application>Self</application> (prototype-based),
920 <application>NewtonScript</application> (differential inheritance),
921 <application>Act1</application> (actors and futures for concurrency),
922 <application>LISP</application> (code is a runtime inspectable/modifiable
923 tree) and <application>Lua</application> (small, embeddable).</para>
924
925 <itemizedlist spacing="compact">
926 <listitem>
927 <para>Project Home Page: <ulink
928 url="http://www.iolanguage.com/about/"/></para>
929 </listitem>
930 <listitem>
931 <para>Download Location: <ulink
932 url="http://www.iolanguage.com/downloads/"/></para>
933 </listitem>
934 </itemizedlist>
935
936 </sect3>
937
938 <sect3 role="package">
939 <title>J</title>
940
941 <para><application>J</application> is a modern, high-level,
942 general-purpose, high-performance programming language. It is portable
943 and runs on Windows, Unix, Mac, and PocketPC handhelds, both as a GUI
944 and in a console. True 64-bit <application>J</application> systems are
945 available for XP64 or Linux64, on AMD64 or Intel EM64T platforms.
946 <application>J</application> systems can be installed and distributed
947 for free.</para>
948
949 <itemizedlist spacing="compact">
950 <listitem>
951 <para>Project Home Page: <ulink
952 url="http://www.jsoftware.com/"/></para>
953 </listitem>
954 <listitem>
955 <para>Download Location: <ulink
956 url="http://www.jsoftware.com/download/"/></para>
957 </listitem>
958 </itemizedlist>
959
960 </sect3>
961
962 <sect3 role="package">
963 <title>Jamaica</title>
964
965 <para><application>Jamaica</application>, the JVM Macro Assembler, is an
966 easy-to-learn and easy-to-use assembly language for JVM bytecode
967 programming. It uses Java syntax to define a JVM class except for the
968 method body that takes bytecode instructions, including
969 <application>Jamaica</application>'s built-in macros. In
970 <application>Jamaica</application>, bytecode instructions use mnemonics
971 and symbolic names for all variables, parameters, data fields, constants
972 and labels.</para>
973
974 <itemizedlist spacing="compact">
975 <listitem>
976 <para>Project Home Page: <ulink
977 url="http://www.judoscript.com/jamaica.html"/></para>
978 </listitem>
979 <listitem>
980 <para>Download Location: <ulink
981 url="http://www.judoscript.com/download.html"/></para>
982 </listitem>
983 </itemizedlist>
984
985 </sect3>
986
987 <sect3 role="package">
988 <title>Joy</title>
989
990 <para><application>Joy</application> is a purely functional programming
991 language. Whereas all other functional programming languages are based on
992 the application of functions to arguments, <application>Joy</application>
993 is based on the composition of functions. All such functions take a stack
994 as an argument and produce a stack as a value. Consequently much of
995 <application>Joy</application> looks like ordinary postfix notation.
996 However, in <application>Joy</application> a function can consume any
997 number of parameters from the stack and leave any number of results on
998 the stack. The concatenation of appropriate programs denotes the
999 composition of the functions which the programs denote.</para>
1000
1001 <itemizedlist spacing="compact">
1002 <listitem>
1003 <para>Project Home Page: <ulink
1004 url="http://www.latrobe.edu.au/philosophy/phimvt/joy.html"/></para>
1005 </listitem>
1006 </itemizedlist>
1007
1008 </sect3>
1009
1010 <sect3 role="package">
1011 <title>Judo</title>
1012
1013 <para><application>Judo</application> is a practical, functional
1014 scripting language. It is designed to cover the use cases of not only
1015 algorithmic/object-oriented/multi-threaded programming and Java scripting
1016 but also a number of major application domain tasks, such as scripting
1017 for JDBC, WSDL, ActiveX, OS, multiple file/data formats, etc. Despite its
1018 rich functionality, the base language is extremely simple, and domain
1019 support syntax is totally intuitive to domain experts, so that even
1020 though you have never programmed in <application>Judo</application>, you
1021 would have little trouble figuring out what the code does.</para>
1022
1023 <itemizedlist spacing="compact">
1024 <listitem>
1025 <para>Project Home Page: <ulink
1026 url="http://www.judoscript.com/home.html"/></para>
1027 </listitem>
1028 <listitem>
1029 <para>Download Location: <ulink
1030 url="http://www.judoscript.com/download.html"/></para>
1031 </listitem>
1032 </itemizedlist>
1033
1034 </sect3>
1035
1036 <sect3 role="package">
1037 <title>JWIG</title>
1038
1039 <para><application>JWIG</application> is a Java-based high-level
1040 programming language for development of interactive Web services. It
1041 contains an advanced session model, a flexible mechanism for dynamic
1042 construction of XML documents, in particular XHTML, and a powerful API
1043 for simplifying use of the HTTP protocol and many other aspects of Web
1044 service programming. To support program development,
1045 <application>JWIG</application> provides a unique suite of highly
1046 specialized program analyses that at compile time verify for a given
1047 program that no runtime errors can occur while building documents or
1048 receiving form input, and that all documents being shown are valid
1049 according to the document type definition for XHTML 1.0. The main goal of
1050 the <application>JWIG</application> project is to simplify development of
1051 complex Web services, compared to alternatives, such as, Servlets, JSP,
1052 ASP, and PHP. <application>JWIG</application> is a descendant of the
1053 <application>&lt;bigwig&gt;</application> research language.</para>
1054
1055 <itemizedlist spacing="compact">
1056 <listitem>
1057 <para>Project Home Page: <ulink
1058 url="http://www.brics.dk/JWIG/"/></para>
1059 </listitem>
1060 <listitem>
1061 <para>Download Location: <ulink
1062 url="http://www.brics.dk/JWIG/download.html"/></para>
1063 </listitem>
1064 </itemizedlist>
1065
1066 </sect3>
1067
1068 <sect3 role="package">
1069 <title>Lava</title>
1070
1071 <para><application>Lava</application> is a name unfortunately chosen for
1072 several unrelated software development languages/projects. So it doesn't
1073 appear as though BLFS has a preference for one over another, the project
1074 web sites are listed below, without descriptions of the capabilities or
1075 features for any of them.</para>
1076
1077 <itemizedlist spacing="compact">
1078 <listitem>
1079 <para>Project Home Page: <ulink
1080 url="http://lavape.sourceforge.net/index.htm"/></para>
1081 </listitem>
1082 <listitem>
1083 <para>Project Home Page: <ulink
1084 url="http://javalab.cs.uni-bonn.de/research/darwin/#The%20Lava%20Language"/></para>
1085 </listitem>
1086 <listitem>
1087 <para>Project Home Page: <ulink
1088 url="http://www.md.chalmers.se/~koen/Lava/"/></para>
1089 </listitem>
1090 <listitem>
1091 <para>Project Home Page: <ulink
1092 url="http://members.tripod.com/mathias/IavaHomepage.html"/></para>
1093 </listitem>
1094 </itemizedlist>
1095
1096 </sect3>
1097
1098 <sect3 role="package">
1099 <title>Lua</title>
1100
1101 <para><application>Lua</application> is a powerful light-weight
1102 programming language designed for extending applications. It is also
1103 frequently used as a general-purpose, stand-alone language. It is free
1104 software. <application>Lua</application> combines simple procedural
1105 syntax with powerful data description constructs based on associative
1106 arrays and extensible semantics. It is dynamically typed, interpreted
1107 from bytecodes, and has automatic memory management with garbage
1108 collection, making it ideal for configuration, scripting, and rapid
1109 prototyping. A fundamental concept in the design of
1110 <application>Lua</application> is to provide meta-mechanisms for
1111 implementing features, instead of providing a host of features directly
1112 in the language. For example, although <application>Lua</application> is
1113 not a pure object-oriented language, it does provide meta-mechanisms for
1114 implementing classes and inheritance. <application>Lua</application>'s
1115 meta-mechanisms bring an economy of concepts and keep the language small,
1116 while allowing the semantics to be extended in unconventional ways.
1117 Extensible semantics is a distinguishing feature of
1118 <application>Lua</application>. <application>Lua</application> is a
1119 language engine that you can embed into your application. This means
1120 that, besides syntax and semantics, it has an API that allows the
1121 application to exchange data with <application>Lua</application> programs
1122 and also to extend <application>Lua</application> with C functions. In
1123 this sense, it can be regarded as a language framework for building
1124 domain-specific languages. <application>Lua</application> is implemented
1125 as a small library of C functions, written in ANSI C, and compiles
1126 unmodified in all known platforms. The implementation goals are
1127 simplicity, efficiency, portability, and low embedding cost. The result
1128 is a fast language engine with small footprint, making it ideal in
1129 embedded systems too.</para>
1130
1131 <itemizedlist spacing="compact">
1132 <listitem>
1133 <para>Project Home Page: <ulink
1134 url="http://www.lua.org/"/></para>
1135 </listitem>
1136 <listitem>
1137 <para>Download Location: <ulink
1138 url="http://www.lua.org/download.html"/></para>
1139 </listitem>
1140 </itemizedlist>
1141
1142 </sect3>
1143
1144 <sect3 role="package">
1145 <title>Mercury</title>
1146
1147 <para><application>Mercury</application> is a new logic/functional
1148 programming language, which combines the clarity and expressiveness of
1149 declarative programming with advanced static analysis and error detection
1150 features. Its highly optimized execution algorithm delivers efficiency
1151 far in excess of existing logic programming systems, and close to
1152 conventional programming systems. <application>Mercury</application>
1153 addresses the problems of large-scale program development, allowing
1154 modularity, separate compilation, and numerous optimization/time
1155 trade-offs.</para>
1156
1157 <itemizedlist spacing="compact">
1158 <listitem>
1159 <para>Project Home Page: <ulink
1160 url="http://www.cs.mu.oz.au/research/mercury/"/></para>
1161 </listitem>
1162 <listitem>
1163 <para>Download Location: <ulink
1164 url="http://www.cs.mu.oz.au/research/mercury/download/release.html"/></para>
1165 </listitem>
1166 </itemizedlist>
1167
1168 </sect3>
1169
1170 <sect3 role="package">
1171 <title>Mono</title>
1172
1173 <para><application>Mono</application> provides the necessary software to
1174 develop and run .NET client and server applications on Linux, Solaris,
1175 Mac OS X, Windows, and Unix. Sponsored by Novell, the
1176 <application>Mono</application> open source project has an active and
1177 enthusiastic contributing community and is positioned to become the
1178 leading choice for development of Linux applications.</para>
1179
1180 <itemizedlist spacing="compact">
1181 <listitem>
1182 <para>Project Home Page: <ulink
1183 url="http://www.mono-project.com/Main_Page"/></para>
1184 </listitem>
1185 <listitem>
1186 <para>Download Location: <ulink
1187 url="http://go-mono.com/sources/"/></para>
1188 </listitem>
1189 </itemizedlist>
1190
1191 </sect3>
1192
1193 <sect3 role="package">
1194 <title>Mozart</title>
1195
1196 <para>The <application>Mozart</application> Programming System is an
1197 advanced development platform for intelligent, distributed applications.
1198 <application>Mozart</application> is based on the Oz language, which
1199 supports declarative programming, object-oriented programming, constraint
1200 programming, and concurrency as part of a coherent whole. For
1201 distribution, <application>Mozart</application> provides a true network
1202 transparent implementation with support for network awareness, openness,
1203 and fault tolerance. Security is upcoming. It is an ideal platform for
1204 both general-purpose distributed applications as well as for hard
1205 problems requiring sophisticated optimization and inferencing
1206 abilities.</para>
1207
1208 <itemizedlist spacing="compact">
1209 <listitem>
1210 <para>Project Home Page: <ulink
1211 url="http://www.mozart-oz.org/"/></para>
1212 </listitem>
1213 <listitem>
1214 <para>Download Location: <ulink
1215 url="http://www.mozart-oz.org/download/view.cgi"/></para>
1216 </listitem>
1217 </itemizedlist>
1218
1219 </sect3>
1220
1221 <sect3 role="package">
1222 <title>MPD</title>
1223
1224 <para><application>MPD</application> is a variant of the
1225 <application>SR</application> programming language.
1226 <application>SR</application> has a Pascal-like syntax and uses guarded
1227 commands for control statements. <application>MPD</application> has a
1228 C-like syntax and C-like control statements. However, the main components
1229 of the two languages are the same: resources, globals, operations, procs,
1230 procedures, processes, and virtual machines. Moreover,
1231 <application>MPD</application> supports the same variety of concurrent
1232 programming mechanisms as <application>SR</application>: co statements,
1233 semaphores, call/send/forward invocations, and receive and input
1234 statements.</para>
1235
1236 <itemizedlist spacing="compact">
1237 <listitem>
1238 <para>Project Home Page: <ulink
1239 url="http://www.cs.arizona.edu/mpd/"/></para>
1240 </listitem>
1241 <listitem>
1242 <para>Download Location: <ulink
1243 url="http://www.cs.arizona.edu/mpd/download/"/></para>
1244 </listitem>
1245 </itemizedlist>
1246
1247 </sect3>
1248
1249 <sect3 role="package">
1250 <title>Nemerle</title>
1251
1252 <para><application>Nemerle</application> is a high-level statically-typed
1253 programming language for the .NET platform. It offers functional,
1254 object-oriented and imperative features. It has a simple C#-like syntax
1255 and a powerful meta-programming system. Features that come from the
1256 functional land are variants, pattern matching, type inference and
1257 parameter polymorphism (aka generics). The meta-programming system allows
1258 great compiler extensibility, embedding domain specific languages,
1259 partial evaluation and aspect-oriented programming.</para>
1260
1261 <itemizedlist spacing="compact">
1262 <listitem>
1263 <para>Project Home Page: <ulink
1264 url="http://nemerle.org/Main_Page"/></para>
1265 </listitem>
1266 <listitem>
1267 <para>Download Location: <ulink
1268 url="http://nemerle.org/Download"/></para>
1269 </listitem>
1270 </itemizedlist>
1271
1272 </sect3>
1273
1274 <sect3 role="package">
1275 <title>Octave</title>
1276
1277 <para>GNU <application>Octave</application> is a high-level language,
1278 primarily intended for numerical computations. It provides a convenient
1279 command line interface for solving linear and nonlinear problems
1280 numerically, and for performing other numerical experiments using a
1281 language that is mostly compatible with Matlab. It may also be used as
1282 a batch-oriented language. <application>Octave</application> has
1283 extensive tools for solving common numerical linear algebra problems,
1284 finding the roots of nonlinear equations, integrating ordinary functions,
1285 manipulating polynomials, and integrating ordinary differential and
1286 differential-algebraic equations. It is easily extensible and
1287 customizable via user-defined functions written in
1288 <application>Octave</application>'s own language, or using dynamically
1289 loaded modules written in C++, C, Fortran, or other languages.</para>
1290
1291 <itemizedlist spacing="compact">
1292 <listitem>
1293 <para>Project Home Page: <ulink
1294 url="http://www.octave.org/"/></para>
1295 </listitem>
1296 <listitem>
1297 <para>Download Location: <ulink
1298 url="http://www.octave.org/download.html"/></para>
1299 </listitem>
1300 </itemizedlist>
1301
1302 </sect3>
1303
1304 <sect3 role="package">
1305 <title>OO2C (Optimizing Oberon-2 Compiler)</title>
1306
1307 <para><application>OO2C</application> is an Oberon-2 development
1308 platform. It consists of an optimizing compiler, a number of related
1309 tools, a set of standard library modules and a reference manual.
1310 Oberon-2 is a general-purpose programming language in the tradition of
1311 Pascal and Modula-2. Its most important features are block structure,
1312 modularity, separate compilation, static typing with strong type checking
1313 (also across module boundaries) and type extension with type-bound
1314 procedures. Type extension makes Oberon-2 an object-oriented
1315 language.</para>
1316
1317 <itemizedlist spacing="compact">
1318 <listitem>
1319 <para>Project Home Page: <ulink
1320 url="http://ooc.sourceforge.net/"/></para>
1321 </listitem>
1322 <listitem>
1323 <para>Download Location: <ulink
1324 url="http://prdownloads.sourceforge.net/ooc/"/></para>
1325 </listitem>
1326 </itemizedlist>
1327
1328 </sect3>
1329
1330 <sect3 role="package">
1331 <title>Ordered Graph Data Language (OGDL)</title>
1332
1333 <para><application>OGDL</application> is a structured textual format that
1334 represents information in the form of graphs, where the nodes are strings
1335 and the arcs or edges are spaces or indentation.</para>
1336
1337 <itemizedlist spacing="compact">
1338 <listitem>
1339 <para>Project Home Page: <ulink
1340 url="http://ogdl.sourceforge.net/"/></para>
1341 </listitem>
1342 <listitem>
1343 <para>Download Location: <ulink
1344 url="http://prdownloads.sourceforge.net/ogdl/"/></para>
1345 </listitem>
1346 </itemizedlist>
1347
1348 </sect3>
1349
1350 <sect3 role="package">
1351 <title>Pike</title>
1352
1353 <para><application>Pike</application> is a dynamic programming language
1354 with a syntax similar to Java and C. It is simple to learn, does not
1355 require long compilation passes and has powerful built-in data types
1356 allowing simple and really fast data manipulation. Pike is released under
1357 the GNU GPL, GNU LGPL and MPL.</para>
1358
1359 <itemizedlist spacing="compact">
1360 <listitem>
1361 <para>Project Home Page: <ulink
1362 url="http://pike.ida.liu.se/"/></para>
1363 </listitem>
1364 <listitem>
1365 <para>Download Location: <ulink
1366 url="http://pike.ida.liu.se/download/pub/pike"/></para>
1367 </listitem>
1368 </itemizedlist>
1369
1370 </sect3>
1371<!-- Broken link
1372 <sect3 role="package">
1373 <title>pyc</title>
1374
1375 <para><application>pyc</application> is a compiler that compiles
1376 <application>Python</application> source code to bytecode (from
1377 <filename class='extension'>.py</filename> to
1378 <filename class='extension'>.pyc</filename>), written entirely in
1379 <application>Python</application> (based on code from the <quote>compiler
1380 package</quote>). It can compile itself and pass a 3-stage bootstrap.
1381 <application>pyc</application> performs advanced optimizations which
1382 results in better (smaller) bytecode.</para>
1383
1384 <itemizedlist spacing="compact">
1385 <listitem>
1386 <para>Project Home Page: <ulink
1387 url="http://students.ceid.upatras.gr/~sxanth/pyc/"/></para>
1388 </listitem>
1389 </itemizedlist>
1390
1391 </sect3>
1392-->
1393 <sect3 role="package">
1394 <title>Pyrex</title>
1395
1396 <para><application>Pyrex</application> is a language specially designed
1397 for writing Python extension modules. It's designed to bridge the gap
1398 between the nice, high-level, easy-to-use world of
1399 <application>Python</application> and the messy, low-level world of C.
1400 <application>Pyrex</application> lets you write code that mixes
1401 <application>Python</application> and C data types any way you want, and
1402 compiles it into a C extension for
1403 <application>Python</application>.</para>
1404
1405 <itemizedlist spacing="compact">
1406 <listitem>
1407 <para>Project Home Page: <ulink
1408 url="http://www.cosc.canterbury.ac.nz/~greg/python/Pyrex/"/></para>
1409 </listitem>
1410 </itemizedlist>
1411
1412 </sect3>
1413
1414 <sect3 role="package">
1415 <title>Q</title>
1416
1417 <para><application>Q</application> is a functional programming language
1418 based on term rewriting. Thus, a <application>Q</application> program or
1419 <quote>script</quote> is simply a collection of equations which are used
1420 to evaluate expressions in a symbolic fashion. The equations establish
1421 algebraic identities and are interpreted as rewriting rules in order to
1422 reduce expressions to <quote>normal forms</quote>.</para>
1423
1424 <itemizedlist spacing="compact">
1425 <listitem>
1426 <para>Project Home Page: <ulink
1427 url="http://q-lang.sourceforge.net/"/></para>
1428 </listitem>
1429 <listitem>
1430 <para>Download Location: <ulink
1431 url="http://prdownloads.sourceforge.net/q-lang/"/></para>
1432 </listitem>
1433 </itemizedlist>
1434
1435 </sect3>
1436
1437 <sect3 role="package">
1438 <title>R</title>
1439
1440 <para><application>R</application> is a language and environment for
1441 statistical computing and graphics. It is a GNU project similar to the
1442 <application>S</application> language and environment which was developed
1443 at Bell Laboratories (formerly AT&amp;T, now Lucent Technologies) by
1444 John Chambers and colleagues. <application>R</application> can be
1445 considered as a different implementation of <application>S</application>.
1446 There are some important differences, but much code written for
1447 <application>S</application> runs unaltered under
1448 <application>R</application>. <application>R</application> provides a
1449 wide variety of statistical (linear and nonlinear modelling, classical
1450 statistical tests, time-series analysis, classification, clustering, ...)
1451 and graphical techniques, and is highly extensible. The
1452 <application>S</application> language is often the vehicle of choice for
1453 research in statistical methodology, and <application>R</application>
1454 provides an Open Source route to participation in that activity.</para>
1455
1456 <itemizedlist spacing="compact">
1457 <listitem>
1458 <para>Project Home Page: <ulink
1459 url="http://www.r-project.org/"/></para>
1460 </listitem>
1461 <listitem>
1462 <para>Download Location: <ulink
1463 url="http://cran.r-project.org/mirrors.html"/></para>
1464 </listitem>
1465 </itemizedlist>
1466
1467 </sect3>
1468
1469 <sect3 role="package">
1470 <title>Regina Rexx</title>
1471
1472 <para><application>Regina</application> is a Rexx interpreter that has
1473 been ported to most Unix platforms (Linux, FreeBSD, Solaris, AIX, HP-UX,
1474 etc.) and also to OS/2, eCS, DOS, Win9x/Me/NT/2k/XP, Amiga, AROS, QNX4.x,
1475 QNX6.x BeOS, MacOS X, EPOC32, AtheOS, OpenVMS, SkyOS and OpenEdition.
1476 Rexx is a programming language that was designed to be easy to use for
1477 inexperienced programmers yet powerful enough for experienced users. It
1478 is also a language ideally suited as a macro language for other
1479 applications.</para>
1480
1481 <itemizedlist spacing="compact">
1482 <listitem>
1483 <para>Project Home Page: <ulink
1484 url="http://regina-rexx.sourceforge.net/"/></para>
1485 </listitem>
1486 <listitem>
1487 <para>Download Location: <ulink
1488 url="http://prdownloads.sourceforge.net/regina-rexx"/></para>
1489 </listitem>
1490 </itemizedlist>
1491
1492 </sect3>
1493
1494 <sect3 role="package">
1495 <title>Serp</title>
1496
1497 <para><application>Serp</application> is an open source framework for
1498 manipulating Java bytecode. The goal of the
1499 <application>Serp</application> bytecode framework is to tap the full
1500 power of bytecode modification while lowering its associated costs. The
1501 framework provides a set of high-level APIs for manipulating all aspects
1502 of bytecode, from large-scale structures like class member fields to the
1503 individual instructions that comprise the code of methods. While in order
1504 to perform any advanced manipulation, some understanding of the class
1505 file format and especially of the JVM instruction set is necessary, the
1506 framework makes it as easy as possible to enter the world of bytecode
1507 development.</para>
1508
1509 <itemizedlist spacing="compact">
1510 <listitem>
1511 <para>Project Home Page: <ulink
1512 url="http://serp.sourceforge.net/"/></para>
1513 </listitem>
1514 <listitem>
1515 <para>Download Location: <ulink
1516 url="http://serp.sourceforge.net/files/"/></para>
1517 </listitem>
1518 </itemizedlist>
1519
1520 </sect3>
1521
1522 <sect3 role="package">
1523 <title>Small Device C Compiler (SDCC)</title>
1524
1525 <para><application>SDCC</application> is a Freeware, retargettable,
1526 optimizing ANSI-C compiler that targets the Intel 8051, Maxim 80DS390
1527 and the Zilog Z80 based MCUs. Work is in progress on supporting the
1528 Motorola 68HC08 as well as Microchip PIC16 and PIC18 series. The entire
1529 source code for the compiler is distributed under GPL.</para>
1530
1531 <itemizedlist spacing="compact">
1532 <listitem>
1533 <para>Project Home Page: <ulink
1534 url="http://sdcc.sourceforge.net/"/></para>
1535 </listitem>
1536 <listitem>
1537 <para>Download Location: <ulink
1538 url="http://sdcc.sourceforge.net/snap.php#Source"/></para>
1539 </listitem>
1540 </itemizedlist>
1541
1542 </sect3>
1543
1544 <sect3 role="package">
1545 <title>SmartEiffel (The GNU Eiffel Compiler)</title>
1546
1547 <para><application>SmartEiffel</application> claims to be <quote>the
1548 fastest and the slimmest multi-platform Eiffel compiler on Earth</quote>.
1549 Eiffel is an object-oriented programming language which emphasizes the
1550 production of robust software. Its syntax is keyword-oriented in the
1551 ALGOL and Pascal tradition. Eiffel is strongly statically typed, with
1552 automatic memory management (typically implemented by garbage
1553 collection). Distinguishing characteristics of Eiffel include Design by
1554 contract (DbC), liberal use of inheritance including multiple
1555 inheritance, a type system handling both value and reference semantics,
1556 and generic classes. Eiffel has a unified type system&mdash;all types in
1557 Eiffel are classes, so it is possible to create subclasses of the basic
1558 classes such as INTEGER. Eiffel has operator overloading, including the
1559 ability to define new operators, but does not have method
1560 overloading.</para>
1561
1562 <itemizedlist spacing="compact">
1563 <listitem>
1564 <para>Project Home Page: <ulink
1565 url="http://smarteiffel.loria.fr/"/></para>
1566 </listitem>
1567 <listitem>
1568 <para>Download Location: <ulink
1569 url="ftp://ftp.loria.fr/pub/loria/SmartEiffel/"/></para>
1570 </listitem>
1571 </itemizedlist>
1572
1573 </sect3>
1574
1575 <sect3 role="package">
1576 <title>Squeak</title>
1577
1578 <para><application>Squeak</application> is an open, highly-portable
1579 Smalltalk implementation whose virtual machine is written entirely in
1580 Smalltalk, making it easy to debug, analyze, and change. To achieve
1581 practical performance, a translator produces an equivalent C program
1582 whose performance is comparable to commercial Smalltalks. Other
1583 noteworthy aspects of <application>Squeak</application> include:
1584 real-time sound and music synthesis written entirely in Smalltalk,
1585 extensions of BitBlt to handle color of any depth and anti-aliased
1586 image rotation and scaling, network access support that allows simple
1587 construction of servers and other useful facilities, it runs
1588 bit-identical on many platforms (Windows, Mac, Unix, and others), a
1589 compact object format that typically requires only a single word of
1590 overhead per object and a simple yet efficient incremental garbage
1591 collector for 32-bit direct pointers efficient bulk-mutation of
1592 objects.</para>
1593
1594 <itemizedlist spacing="compact">
1595 <listitem>
1596 <para>Project Home Page: <ulink
1597 url="http://www.squeak.org/"/></para>
1598 </listitem>
1599 <listitem>
1600 <para>Download Location: <ulink
1601 url="http://www.squeak.org/Download/"/></para>
1602 </listitem>
1603 </itemizedlist>
1604
1605 </sect3>
1606
1607 <sect3 role="package">
1608 <title>SR (Synchronizing Resources)</title>
1609
1610 <para><application>SR</application> is a language for writing concurrent
1611 programs. The main language constructs are resources and operations.
1612 Resources encapsulate processes and variables they share; operations
1613 provide the primary mechanism for process interaction.
1614 <application>SR</application> provides a novel integration of the
1615 mechanisms for invoking and servicing operations. Consequently, all of
1616 local and remote procedure call, rendezvous, message passing, dynamic
1617 process creation, multicast, and semaphores are supported.
1618 <application>SR</application> also supports shared global variables and
1619 operations.</para>
1620
1621 <itemizedlist spacing="compact">
1622 <listitem>
1623 <para>Project Home Page: <ulink
1624 url="http://www.cs.arizona.edu/sr/index.html"/></para>
1625 </listitem>
1626 <listitem>
1627 <para>Download Location: <ulink
1628 url="ftp://ftp.cs.arizona.edu/sr/"/></para>
1629 </listitem>
1630 </itemizedlist>
1631
1632 </sect3>
1633
1634 <sect3 role="package">
1635 <title>Standard ML</title>
1636
1637 <para>Standard ML is a safe, modular, strict, functional, polymorphic
1638 programming language with compile-time type checking and type inference,
1639 garbage collection, exception handling, immutable data types and
1640 updatable references, abstract data types, and parametric modules. It has
1641 efficient implementations and a formal definition with a proof of
1642 soundness. There are many implementations of Standard ML, among them:</para>
1643
1644 <itemizedlist spacing="compact">
1645 <listitem>
1646 <para>ML Kit: <ulink
1647 url="http://www.it-c.dk/research/mlkit/"/></para>
1648 </listitem>
1649 <listitem>
1650 <para>MLton: <ulink
1651 url="http://mlton.org/"/></para>
1652 </listitem>
1653 <listitem>
1654 <para>Moscow ML: <ulink
1655 url="http://www.dina.kvl.dk/~sestoft/mosml.html"/></para>
1656 </listitem>
1657 <listitem>
1658 <para>Poly/ML: <ulink
1659 url="http://www.polyml.org/"/></para>
1660 </listitem>
1661 <listitem>
1662 <para>Standard ML of New Jersey: <ulink
1663 url="http://www.smlnj.org/"/></para>
1664 </listitem>
1665 </itemizedlist>
1666
1667 </sect3>
1668
1669 <sect3 role="package">
1670 <title>Steel Bank Common Lisp (SBCL)</title>
1671
1672 <para><application>SBCL</application> is an open source (free software)
1673 compiler and runtime system for ANSI Common Lisp. It provides an
1674 interactive environment including an integrated native compiler, a
1675 debugger, and many extensions. <application>SBCL</application> runs on a
1676 number of platforms.</para>
1677
1678 <itemizedlist spacing="compact">
1679 <listitem>
1680 <para>Project Home Page: <ulink
1681 url="http://www.sbcl.org/"/></para>
1682 </listitem>
1683 <listitem>
1684 <para>Download Location: <ulink
1685 url="http://prdownloads.sourceforge.net/sbcl/"/></para>
1686 </listitem>
1687 </itemizedlist>
1688
1689 </sect3>
1690
1691 <sect3 role="package">
1692 <title>Tiny C Compiler (TCC)</title>
1693
1694 <para><application>Tiny C Compiler</application> is a small C compiler
1695 that can be used to compile and execute C code everywhere, for example
1696 on rescue disks (about 100KB for x86 TCC executable, including C
1697 preprocessor, C compiler, assembler and linker).
1698 <application>TCC</application> is fast. It generates optimized x86 code,
1699 has no byte code overhead and compiles, assembles and links several times
1700 faster than <application>GCC</application>.
1701 <application>TCC</application> is versatile, any C dynamic library can be
1702 used directly. It is heading torward full ISOC99 compliance and can
1703 compile itself. The compiler is safe as it includes an optional memory
1704 and bound checker. Bound checked code can be mixed freely with standard
1705 code. <application>TCC</application> compiles and executes C source
1706 directly. No linking or assembly necessary. A full C preprocessor and
1707 GNU-like assembler is included. It is C script supported; just add
1708 <quote>#!/usr/local/bin/tcc -run</quote> on the first line of your C
1709 source, and execute it directly from the command line. With libtcc, you
1710 can use <application>TCC</application> as a backend for dynamic code
1711 generation.</para>
1712
1713 <itemizedlist spacing="compact">
1714 <listitem>
1715 <para>Project Home Page: <ulink
1716 url="http://www.tinycc.org/"/></para>
1717 </listitem>
1718 <listitem>
1719 <para>Download Location: <ulink
1720 url="http://fabrice.bellard.free.fr/tcc/"/></para>
1721 </listitem>
1722 </itemizedlist>
1723
1724 </sect3>
1725
1726 <sect3 role="package">
1727 <title>TinyCOBOL</title>
1728
1729 <para><application>TinyCOBOL</application> is a COBOL compiler being
1730 developed by members of the free software community. The mission is to
1731 produce a COBOL compiler based on the COBOL 85 standards.
1732 <application>TinyCOBOL</application> is avaliable for the Intel
1733 architecture (IA32) and compatible processors on the following platforms:
1734 BeOS, FreeBSD, Linux and MinGW on Windows.</para>
1735
1736 <itemizedlist spacing="compact">
1737 <listitem>
1738 <para>Project Home Page: <ulink
1739 url="http://tinycobol.org/"/></para>
1740 </listitem>
1741 <listitem>
1742 <para>Download Location: <ulink
1743 url="http://prdownloads.sourceforge.net/tiny-cobol/"/></para>
1744 </listitem>
1745 </itemizedlist>
1746
1747 </sect3>
1748
1749 <sect3 role="package">
1750 <title>Yorick</title>
1751
1752 <para><application>Yorick</application> is an interpreted programming
1753 language, designed for postprocessing or steering large scientific
1754 simulation codes. Smaller scientific simulations or calculations, such as
1755 the flow past an airfoil or the motion of a drumhead, can be written as
1756 standalone yorick programs. The language features a compact syntax for
1757 many common array operations, so it processes large arrays of numbers
1758 very efficiently. Unlike most interpreters, which are several hundred
1759 times slower than compiled code for number crunching,
1760 <application>Yorick</application> can approach to within a factor of four
1761 or five of compiled speed for many common tasks. Superficially,
1762 <application>Yorick</application> code resembles C code, but
1763 <application>Yorick</application> variables are never explicitly declared
1764 and have a dynamic scoping similar to many Lisp dialects. The
1765 <quote>unofficial</quote> home page for <application>Yorick</application>
1766 can be found at <ulink url="http://www.maumae.net/yorick"/>.</para>
1767
1768 <itemizedlist spacing="compact">
1769 <listitem>
1770 <para>Project Home Page: <ulink
1771 url="ftp://ftp-icf.llnl.gov/pub/Yorick/doc/index.html"/></para>
1772 </listitem>
1773 <listitem>
1774 <para>Download Location: <ulink
1775 url="ftp://ftp-icf.llnl.gov/pub/Yorick/doc/download.html"/></para>
1776 </listitem>
1777 </itemizedlist>
1778
1779 </sect3>
1780
1781 <sect3 role="package">
1782 <title>ZPL</title>
1783
1784 <para><application>ZPL</application> is an array programming language
1785 designed from first principles for fast execution on both sequential
1786 and parallel computers. It provides a convenient high-level programming
1787 medium for supercomputers and large-scale clusters with efficiency
1788 comparable to hand-coded message passing. It is the perfect alternative
1789 to using a sequential language like C or Fortran and a message passing
1790 library like MPI.</para>
1791
1792 <itemizedlist spacing="compact">
1793 <listitem>
1794 <para>Project Home Page: <ulink
1795 url="http://www.cs.washington.edu/research/zpl/home/index.html"/></para>
1796 </listitem>
1797 <listitem>
1798 <para>Download Location: <ulink
1799 url="http://www.cs.washington.edu/research/zpl/download/download.html"/></para>
1800 </listitem>
1801 </itemizedlist>
1802
1803 </sect3>
1804
1805 </sect2>
1806
1807 <sect2>
1808 <title>Programming Libraries and Bindings</title>
1809
1810 <sect3 role="package">
1811 <title>Boost</title>
1812
1813 <para><application>Boost</application> provides free peer-reviewed
1814 portable C++ source libraries. The emphasis is on libraries which work
1815 well with the C++ Standard Library. The libraries are intended to be
1816 widely useful, and are in regular use by thousands of programmers across
1817 a broad spectrum of applications, platforms and programming
1818 environments.</para>
1819
1820 <itemizedlist spacing="compact">
1821 <listitem>
1822 <para>Project Home Page: <ulink
1823 url="http://www.boost.org/"/></para>
1824 </listitem>
1825 <listitem>
1826 <para>Download Location: <ulink
1827 url="http://prdownloads.sourceforge.net/boost/"/></para>
1828 </listitem>
1829 </itemizedlist>
1830
1831 </sect3>
1832
1833 <sect3 role="package">
1834 <title>Choco</title>
1835
1836 <para><application>Choco</application> is a Java library for constraint
1837 satisfaction problems (CSP), constraint programming (CP) and
1838 explanation-based constraint solving (e-CP). It is built on a event-based
1839 propagation mechanism with backtrackable structures.</para>
1840
1841 <itemizedlist spacing="compact">
1842 <listitem>
1843 <para>Project Home Page: <ulink
1844 url="http://choco.sourceforge.net/"/></para>
1845 </listitem>
1846 <listitem>
1847 <para>Download Location: <ulink
1848 url="http://choco.sourceforge.net/download.html"/></para>
1849 </listitem>
1850 </itemizedlist>
1851
1852 </sect3>
1853
1854 <sect3 role="package">
1855 <title>FFTW (Fastest Fourier Transform in the West)</title>
1856
1857 <para><application>FFTW</application> is a C subroutine library for
1858 computing the discrete Fourier transform (DFT) in one or more dimensions,
1859 of arbitrary input size, and of both real and complex data (as well as of
1860 even/odd data, i.e., the discrete cosine/sine transforms or DCT/DST).</para>
1861
1862 <itemizedlist spacing="compact">
1863 <listitem>
1864 <para>Project Home Page: <ulink
1865 url="http://www.fftw.org/"/></para>
1866 </listitem>
1867 <listitem>
1868 <para>Download Location: <ulink
1869 url="http://www.fftw.org/download.html"/></para>
1870 </listitem>
1871 </itemizedlist>
1872
1873 </sect3>
1874
1875 <sect3 role="package">
1876 <title>GOB (GObject Builder)</title>
1877
1878 <para><application>GOB</application> (<application>GOB2</application>
1879 anyway) is a preprocessor for making GObjects with inline C code so that
1880 generated files are not edited. Syntax is inspired by
1881 <application>Java</application> and <application>Yacc</application> or
1882 <application>Lex</application>. The implementation is intentionally kept
1883 simple, and no C actual code parsing is done.</para>
1884
1885 <itemizedlist spacing="compact">
1886 <listitem>
1887 <para>Project Home Page: <ulink
1888 url="http://www.5z.com/jirka/gob.html"/></para>
1889 </listitem>
1890 <listitem>
1891 <para>Download Location: <ulink
1892 url="http://ftp.5z.com/pub/gob/"/></para>
1893 </listitem>
1894 </itemizedlist>
1895
1896 </sect3>
1897
1898 <sect3 role="package">
1899 <title>GTK+/GNOME Language Bindings (wrappers)</title>
1900
1901 <para><application>GTK+</application>/<application>GNOME</application>
1902 language bindings allow <application>GTK+</application> to be used from
1903 other programming languages, in the style of those languages.</para>
1904
1905 <itemizedlist spacing="compact">
1906 <listitem>
1907 <para>Project Home Page: <ulink
1908 url="http://www.gtk.org/bindings.html"/></para>
1909 </listitem>
1910 </itemizedlist>
1911
1912 <sect4 role="package">
1913 <title>gtkmm</title>
1914
1915 <para><application>gtkmm</application> is the official C++ interface
1916 for the popular GUI library <application>GTK+</application>. Highlights
1917 include typesafe callbacks, widgets extensible via inheritance and a
1918 comprehensive set of widgets. You can create user interfaces either in
1919 code or with the Glade designer, using
1920 <application>libglademm</application>.</para>
1921
1922 <itemizedlist spacing="compact">
1923 <listitem>
1924 <para>Project Home Page: <ulink
1925 url="http://www.gtkmm.org/"/></para>
1926 </listitem>
1927 <listitem>
1928 <para>Download Location: <ulink
1929 url="http://www.gtkmm.org/download.shtml"/></para>
1930 </listitem>
1931 </itemizedlist>
1932
1933 </sect4>
1934
1935 <sect4 role="package">
1936 <title>Java-GNOME</title>
1937
1938 <para><application>Java-GNOME</application> is a set of Java bindings
1939 for the <application>GNOME</application> and
1940 <application>GTK+</application> libraries that allow
1941 <application>GNOME</application> and <application>GTK+</application>
1942 applications to be written in Java. The
1943 <application>Java-GNOME</application> API has been carefully designed
1944 to be easy to use, maintaining a good OO paradigm, yet still wrapping
1945 the entire functionality of the underlying libraries.
1946 <application>Java-GNOME</application> can be used with the
1947 <application>Eclipse</application> development environment and Glade
1948 user interface designer to create applications with ease.</para>
1949
1950 <itemizedlist spacing="compact">
1951 <listitem>
1952 <para>Project Home Page: <ulink
1953 url="http://java-gnome.sourceforge.net/cgi-bin/bin/view"/></para>
1954 </listitem>
1955 <listitem>
1956 <para>Download Location: <ulink
1957 url="http://java-gnome.sourceforge.net/cgi-bin/bin/view/Main/GetJavaGnome#Source_Code"/></para>
1958 </listitem>
1959 </itemizedlist>
1960
1961 </sect4>
1962
1963 <sect4 role="package">
1964 <title>gtk2-perl</title>
1965
1966 <para><application>gtk2-perl</application> is the collective name for
1967 a set of perl bindings for <application>GTK+</application> 2.x and
1968 various related libraries. These modules make it easy to write
1969 <application>GTK</application> and <application>GNOME</application>
1970 applications using a natural, perlish, object-oriented syntax.</para>
1971
1972 <itemizedlist spacing="compact">
1973 <listitem>
1974 <para>Project Home Page: <ulink
1975 url="http://gtk2-perl.sourceforge.net/"/></para>
1976 </listitem>
1977 <listitem>
1978 <para>Download Location: <ulink
1979 url="http://prdownloads.sourceforge.net/gtk2-perl"/></para>
1980 </listitem>
1981 </itemizedlist>
1982
1983 </sect4>
1984
1985 <sect4 role="package">
1986 <title>PyGTK</title>
1987
1988 <para><application>PyGTK</application> provides a convenient wrapper
1989 for the <application>GTK</application> library for use in
1990 <application>Python</application> programs, and takes care of many of
1991 the boring details such as managing memory and type casting. When
1992 combined with <application>PyORBit</application> and
1993 <application>gnome-python</application>, it can be used to write full
1994 featured <application>GNOME</application> applications.</para>
1995
1996 <itemizedlist spacing="compact">
1997 <listitem>
1998 <para>Project Home Page: <ulink
1999 url="http://www.pygtk.org/"/></para>
2000 </listitem>
2001 <listitem>
2002 <para>Download Location: <ulink
2003 url="http://www.pygtk.org/downloads.html"/></para>
2004 </listitem>
2005 </itemizedlist>
2006
2007 </sect4>
2008
2009 </sect3>
2010
2011 <sect3 role="package">
2012 <title>KDE Language Bindings</title>
2013
2014 <para><application>KDE</application> and most
2015 <application>KDE</application> applications are implemented using the
2016 C++ programming language, however there are number of bindings to other
2017 languages are available. These include scripting languages like
2018 <application>Perl</application>, <application>Python</application> and
2019 <application>Ruby</application>, and systems programming languages such
2020 as Java and C#.</para>
2021
2022 <itemizedlist spacing="compact">
2023 <listitem>
2024 <para>Project Home Page: <ulink
2025 url="http://developer.kde.org/language-bindings/"/></para>
2026 </listitem>
2027 </itemizedlist>
2028
2029 </sect3>
2030
2031 <sect3 role="package">
2032 <title>Numerical Python (Numpy)</title>
2033
2034 <para><application>Numerical Python</application> adds a fast array
2035 facility to the <application>Python</application> language.</para>
2036
2037 <itemizedlist spacing="compact">
2038 <listitem>
2039 <para>Project Home Page: <ulink
2040 url="http://numeric.scipy.org/"/></para>
2041 </listitem>
2042 <listitem>
2043 <para>Download Location: <ulink
2044 url="http://prdownloads.sourceforge.net/numpy/"/></para>
2045 </listitem>
2046 </itemizedlist>
2047
2048 </sect3>
2049
2050 <sect3 role="package">
2051 <title>Perl Scripts and Additional Modules</title>
2052
2053 <para>There are many <application>Perl</application> scripts and
2054 additional modules located on the Comprehensive Perl Archive Network
2055 (CPAN) web site. Here you will find
2056 <quote>All Things Perl</quote>.</para>
2057
2058 <itemizedlist spacing="compact">
2059 <listitem>
2060 <para>Project Home Page: <ulink
2061 url="http://cpan.org/"/></para>
2062 </listitem>
2063 </itemizedlist>
2064
2065 </sect3>
2066
2067 <sect3 role="package">
2068 <title>SWIG</title>
2069
2070 <para><application>SWIG</application> is a software development tool
2071 that connects programs written in C and C++ with a variety of high-level
2072 programming languages. <application>SWIG</application> is used with
2073 different types of languages including common scripting languages such as
2074 <application>Perl</application>, <application>Python</application>,
2075 <application>Tcl</application>/<application>Tk</application> and
2076 <application>Ruby</application>. The list of supported languages also
2077 includes non-scripting languages such as <application>C#</application>,
2078 <application>Common Lisp</application> (Allegro CL),
2079 <application>Java</application>, <application>Modula-3</application>
2080 and <application>OCAML</application>. Also several interpreted and
2081 compiled Scheme implementations (<application>Chicken</application>,
2082 <application>Guile</application>, <application>MzScheme</application>)
2083 are supported. <application>SWIG</application> is most commonly used to
2084 create high-level interpreted or compiled programming environments, user
2085 interfaces, and as a tool for testing and prototyping C/C++ software.
2086 <application>SWIG</application> can also export its parse tree in the
2087 form of XML and Lisp s-expressions.</para>
2088
2089 <itemizedlist spacing="compact">
2090 <listitem>
2091 <para>Project Home Page: <ulink
2092 url="http://www.swig.org/"/></para>
2093 </listitem>
2094 <listitem>
2095 <para>Download Location: <ulink
2096 url="http://prdownloads.sourceforge.net/swig/"/></para>
2097 </listitem>
2098 </itemizedlist>
2099
2100 </sect3>
2101
2102 </sect2>
2103
2104 <sect2>
2105 <title>Other Development Tools</title>
2106
2107 <sect3 role="package">
2108 <title>A-A-P</title>
2109
2110 <para><application>A-A-P</application> makes it easy to locate, download,
2111 build and install software. It also supports browsing source code,
2112 developing programs, managing different versions and distribution of
2113 software and documentation. This means that
2114 <application> A-A-P</application> is useful both for users and for
2115 developers.</para>
2116
2117 <itemizedlist spacing="compact">
2118 <listitem>
2119 <para>Project Home Page: <ulink
2120 url="http://www.a-a-p.org/index.html"/></para>
2121 </listitem>
2122 <listitem>
2123 <para>Download Location: <ulink
2124 url="http://www.a-a-p.org/download.html"/></para>
2125 </listitem>
2126 </itemizedlist>
2127
2128 </sect3>
2129
2130 <sect3 role="package">
2131 <title>cachecc1</title>
2132
2133 <para><application>cachecc1</application> is a
2134 <application>GCC</application> cache. It can be compared with the well
2135 known <application>ccache</application> package. It has some unique
2136 features including the use of an LD_PRELOADed shared object to catch
2137 invocations to <command>cc1</command>, <command>cc1plus</command> and
2138 <command>as</command>, it transparently supports all build methods, it
2139 can cache <application>GCC</application> bootstraps and it can be
2140 combined with <application>distcc</application> to transparently
2141 distribute compilations.</para>
2142
2143 <itemizedlist spacing="compact">
2144 <listitem>
2145 <para>Project Home Page: <ulink
2146 url="http://cachecc1.sourceforge.net/"/></para>
2147 </listitem>
2148 <listitem>
2149 <para>Download Location: <ulink
2150 url="http://prdownloads.sourceforge.net/cachecc1"/></para>
2151 </listitem>
2152 </itemizedlist>
2153
2154 </sect3>
2155
2156 <sect3 role="package">
2157 <title>ccache</title>
2158
2159 <para><application>ccache</application> is a compiler cache. It acts as
2160 a caching pre-processor to C/C++ compilers, using the <option>-E</option>
2161 compiler switch and a hash to detect when a compilation can be satisfied
2162 from cache. This often results in 5 to 10 times faster speeds in common
2163 compilations.</para>
2164
2165 <itemizedlist spacing="compact">
2166 <listitem>
2167 <para>Project Home Page: <ulink
2168 url="http://ccache.samba.org/"/></para>
2169 </listitem>
2170 <listitem>
2171 <para>Download Location: <ulink
2172 url="http://ccache.samba.org/ftp/ccache/"/></para>
2173 </listitem>
2174 </itemizedlist>
2175
2176 </sect3>
2177
2178 <sect3 role="package">
2179 <title>DDD (GNU Data Display Debugger)</title>
2180
2181 <para><application>GNU DDD</application> is a graphical front-end for
2182 command-line debuggers such as <application>GDB</application>,
2183 <application>DBX</application>, <application>WDB</application>,
2184 <application>Ladebug</application>, <application>JDB</application>,
2185 <application>XDB</application>, the <application>Perl</application>
2186 debugger, the <application>Bash</application> debugger, or the
2187 <application>Python</application> debugger. Besides <quote>usual</quote>
2188 front-end features such as viewing source texts,
2189 <application>DDD</application> has an interactive graphical data display,
2190 where data structures are displayed as graphs..</para>
2191
2192 <itemizedlist spacing="compact">
2193 <listitem>
2194 <para>Project Home Page: <ulink
2195 url="http://www.gnu.org/software/ddd/"/></para>
2196 </listitem>
2197 <listitem>
2198 <para>Download Location: <ulink
2199 url="http://ftp.gnu.org/gnu/ddd/"/></para>
2200 </listitem>
2201 </itemizedlist>
2202
2203 </sect3>
2204
2205 <sect3 role="package">
2206 <title>distcc</title>
2207
2208 <para><application>distcc</application> is a program to distribute builds
2209 of C, C++, Objective C or Objective C++ code across several machines on a
2210 network. <application>distcc</application> should always generate the
2211 same results as a local build, is simple to install and use, and is
2212 usually much faster than a local compile.
2213 <application>distcc</application> does not require all machines to share
2214 a filesystem, have synchronized clocks, or to have the same libraries or
2215 header files installed. They can even have different processors or
2216 operating systems, if cross-compilers are installed.</para>
2217
2218 <itemizedlist spacing="compact">
2219 <listitem>
2220 <para>Project Home Page: <ulink
2221 url="http://distcc.samba.org/"/></para>
2222 </listitem>
2223 <listitem>
2224 <para>Download Location: <ulink
2225 url="http://distcc.samba.org/download.html"/></para>
2226 </listitem>
2227 </itemizedlist>
2228
2229 </sect3>
2230
2231 <sect3 role="package">
2232 <title>Exuberant Ctags</title>
2233
2234 <para><application>Exuberant Ctags</application> generates an index (or
2235 tag) file of language objects found in source files that allows these
2236 items to be quickly and easily located by a text editor or other utility.
2237 A tag signifies a language object for which an index entry is available
2238 (or, alternatively, the index entry created for that object). Tag
2239 generation is supported for the following languages: Assembler, AWK, ASP,
2240 BETA, Bourne/Korn/Zsh Shell, C, C++, COBOL, Eiffel, Fortran, Java, Lisp,
2241 Lua, Make, Pascal, Perl, PHP, Python, REXX, Ruby, S-Lang, Scheme, Tcl,
2242 Vim, and YACC. A list of editors and tools utilizing tag files may be
2243 found at <ulink url="http://ctags.sourceforge.net/tools.html"/>.</para>
2244
2245 <itemizedlist spacing="compact">
2246 <listitem>
2247 <para>Project Home Page: <ulink
2248 url="http://ctags.sourceforge.net/"/></para>
2249 </listitem>
2250 <listitem>
2251 <para>Download Location: <ulink
2252 url="http://prdownloads.sourceforge.net/ctags/"/></para>
2253 </listitem>
2254 </itemizedlist>
2255
2256 </sect3>
2257
2258 <sect3 role="package">
2259 <title>GDB (GNU Debugger)</title>
2260
2261 <para><application>GDB</application> is the GNU Project debugger. It
2262 allows you to see what is going on <quote>inside</quote> another program
2263 while it executes. It also allows you to see what another program was
2264 doing at the moment it crashed.</para>
2265
2266 <itemizedlist spacing="compact">
2267 <listitem>
2268 <para>Project Home Page: <ulink
2269 url="http://www.gnu.org/software/gdb/"/></para>
2270 </listitem>
2271 <listitem>
2272 <para>Download Location: <ulink
2273 url="ftp://ftp.gnu.org/gnu/gdb/"/></para>
2274 </listitem>
2275 </itemizedlist>
2276
2277 </sect3>
2278
2279 <sect3 role="package">
2280 <title>gocache (GNU Object Cache)</title>
2281
2282 <para><application>ccache</application> is a clone of
2283 <application>ccache</application>, with the goal of supporting
2284 compilers other than <application>GCC</application> and adding additional
2285 features. Embedded compilers will especially be in focus.</para>
2286
2287 <itemizedlist spacing="compact">
2288 <listitem>
2289 <para>Project Home Page: <ulink
2290 url="http://sourceforge.net/projects/gocache/"/></para>
2291 </listitem>
2292 <listitem>
2293 <para>Download Location: <ulink
2294 url="http://prdownloads.sourceforge.net/gocache/"/></para>
2295 </listitem>
2296 </itemizedlist>
2297
2298 </sect3>
2299
2300 <sect3 role="package">
2301 <title>OProfile</title>
2302
2303 <para><application>OProfile</application> is a system-wide profiler for
2304 Linux systems, capable of profiling all running code at low overhead.
2305 <application>OProfile</application> is released under the GNU GPL. It
2306 consists of a kernel driver and a daemon for collecting sample data, and
2307 several post-profiling tools for turning data into information.
2308 <application>OProfile</application> leverages the hardware performance
2309 counters of the CPU to enable profiling of a wide variety of interesting
2310 statistics, which can also be used for basic time-spent profiling. All
2311 code is profiled: hardware and software interrupt handlers, kernel
2312 modules, the kernel, shared libraries, and applications.
2313 <application>OProfile</application> is currently in alpha status; however
2314 it has proven stable over a large number of differing configurations. It
2315 is being used on machines ranging from laptops to 16-way NUMA-Q
2316 boxes.</para>
2317
2318 <itemizedlist spacing="compact">
2319 <listitem>
2320 <para>Project Home Page: <ulink
2321 url="http://oprofile.sourceforge.net/news/"/></para>
2322 </listitem>
2323 <listitem>
2324 <para>Download Location: <ulink
2325 url="http://oprofile.sourceforge.net/download/"/></para>
2326 </listitem>
2327 </itemizedlist>
2328
2329 </sect3>
2330
2331 <sect3 role="package">
2332 <title>SCons</title>
2333
2334 <para><application>SCons</application> is an Open Source software
2335 construction tool, i.e, a next-generation build tool. Think of
2336 <application>SCons</application> as an improved, cross-platform
2337 substitute for the classic <command>make</command> utility with
2338 integrated functionality similar to
2339 <application>Autoconf</application>/<application>Automake</application>
2340 and compiler caches such as <command>ccache</command>.</para>
2341
2342 <itemizedlist spacing="compact">
2343 <listitem>
2344 <para>Project Home Page: <ulink
2345 url="http://scons.sourceforge.net/"/></para>
2346 </listitem>
2347 <listitem>
2348 <para>Download Location: <ulink
2349 url="http://prdownloads.sourceforge.net/scons/"/></para>
2350 </listitem>
2351 </itemizedlist>
2352
2353 </sect3>
2354
2355 <sect3 role="package">
2356 <title>strace</title>
2357
2358 <para><application>strace</application> is a system call tracer, i.e., a
2359 debugging tool which prints out a trace of all the system calls made by
2360 another process or program.</para>
2361
2362 <itemizedlist spacing="compact">
2363 <listitem>
2364 <para>Project Home Page: <ulink
2365 url="http://www.liacs.nl/~wichert/strace/"/></para>
2366 </listitem>
2367 <listitem>
2368 <para>Download Location: <ulink
2369 url="http://prdownloads.sourceforge.net/strace/"/></para>
2370 </listitem>
2371 </itemizedlist>
2372
2373 </sect3>
2374
2375 <sect3 role="package">
2376 <title>Valgrind</title>
2377
2378 <para><application>Valgrind</application> is a collection of five tools:
2379 two memory error detectors, a thread error detector, a cache profiler and
2380 a heap profiler used for debugging and profiling Linux programs. Features
2381 include automatic detection of many memory management and threading bugs
2382 as well as detailed profiling to speed up and reduce memory use of your
2383 programs.</para>
2384
2385 <itemizedlist spacing="compact">
2386 <listitem>
2387 <para>Project Home Page: <ulink
2388 url="http://valgrind.org/"/></para>
2389 </listitem>
2390 <listitem>
2391 <para>Download Location: <ulink
2392 url="http://valgrind.org/downloads/source_code.html"/></para>
2393 </listitem>
2394 </itemizedlist>
2395
2396 </sect3>
2397
2398 </sect2>
2399
2400</sect1>
Note: See TracBrowser for help on using the repository browser.