source: general/prog/other-tools.xml@ 87ffcb7f

10.0 10.1 11.0 11.1 11.2 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 krejzi/svn lazarus nosym perl-modules plabs/python-mods qt5new systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/soup3 xry111/test-20220226
Last change on this file since 87ffcb7f was 87ffcb7f, checked in by David Jensen <djensen@…>, 16 years ago

spell checks (t thru z)

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

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