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

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 edeebe2 was edeebe2, checked in by Andrew Benton <andy@…>, 18 years ago

Dead links :o(

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

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