1
  
2
  
3
  
4
  
5
  
6
  
7
  
8
  
9
  
10
  
11
  
12
  
13
  
14
  
15
  
16
  
17
  
18
  
19
  
20
  
21
  
22
  
23
  
24
  
25
  
26
  
27
  
28
  
29
  
30
  
31
  
32
  
33
  
34
  
35
  
36
  
37
  
38
  
39
  
40
  
41
  
42
  
43
  
44
  
45
  
46
  
47
  
48
  
49
  
50
  
51
  
52
  
53
  
54
  
55
  
56
  
57
  
58
  
59
  
60
  
61
  
62
  
63
  
64
  
65
  
66
  
67
  
68
  
69
  
70
  
71
  
72
  
73
  
74
  
75
  
76
  
77
  
78
  
79
  
80
  
81
  
82
  
83
  
84
  
85
  
86
  
87
  
88
  
89
  
90
  
91
  
92
  
93
  
94
  
95
  
96
  
97
  
98
  
99
  
100
  
101
  
102
  
103
  
104
  
105
  
106
  
107
  
108
  
109
  
110
  
111
  
112
  
113
  
114
  
115
  
116
  
117
  
118
  
119
  
120
  
121
  
122
  
123
  
124
  
125
  
126
  
127
  
128
  
129
  
130
  
131
  
132
  
133
  
134
  
135
  
136
  
137
  
138
  
139
  
140
  
141
  
142
  
143
  
144
  
145
  
146
  
147
  
148
  
149
  
150
  
151
  
152
  
153
  
154
  
155
  
156
  
157
  
158
  
159
  
160
  
161
  
162
  
163
  
164
  
165
  
166
  
167
  
168
  
169
  
170
  
171
  
172
  
173
  
174
  
175
  
176
  
177
  
178
  
179
  
180
  
181
  
182
  
183
  
184
  
185
  
186
  
187
  
188
  
189
  
190
  
191
  
Pike 0.6 BETA 
 
Pike 0.6 BETA is now available for public beta testing, though 
unfortunately it is not quite complete. Due to Swedish export 
restrictions we are unable to supply the cryptographic toolkit and the 
full library of algorithms. 
 
Pike version 0.6 BETA does not come with a manual yet, there is a manual 
for Pike 0.5, which will be updated to cover all new features in 0.6 as 
soon as possible. There are many changes from Pike 0.5 to Pike 0.6, but 
here are some of the most important ones you should be aware of: 
 
        o The compiler is now two-pass, which means that you can access 
          variables and functions declared later in the source without 
          having to use prototypes. The two-pass compiler also makes 
          it possible to use the name of a class from inside itself. 
 
        o It is now possible to access variables and functions in the 
          'parent' class. This greatly simplifies coding in many 
          situations. 
 
        o The process handling has been changed to being object- 
          oriented. For this purpose, a new function has been created: 
          Process.create_process. The returned object can be used 
          as an argument to kill, and has methods which will report 
          the status of the child process. 
 
        o Similar to process handling, threads have been changed to use 
          an object-oriented approach. 
 
        o The 'varargs' keyword has been removed. 
 
        o You can now 'import "dirname"'. 
 
        o The module system has been modified so that the current 
          directory is no longer searched for modules. To use a module 
          in the current directory, you must either use 'import "."' 
          or specify the module as '.module' instead of just 'module'. 
 
        o Lots of bugs have been fixed. :) 
 
        o Implicit blocks have been implemented around if, switch, for, 
          do-while and foreach, this means that the scope of variables 
          such as 'x' in 'if(string x)' ends after the if construct. 
 
        o popen, system and spawn in the Process module have been changed 
          to *NOT* execute /bin/sh on the given string. This is to ensure 
          compatibility with Win32 systems. 
 
 
While still young, Pike matured over the last few years, and 
development is now co-ordinated by a team at Idonex AB. Pike is still 
released under the GNU General Public License (GPL). It is, and will 
continue to be, freely distributed. Briefly, this means that you are 
free to use and modify the source code in any way you please, see the 
file COPYING for details. Idonex maintains the right to the brand name 
and the copyright, guaranteeing that Pike will be continuously 
developed and enhanced, and remain free software. 
 
Pike is easily learned, and just as easily used to develop powerful 
applications. Pike is designed to be useful and powerful. As the 
syntax of Pike is similar to that of C, most programmers will find it 
easy to use. As Pike is a high-level, interpreted and modular 
object-oriented language, powerful applications can be rapidly 
developed. Pike has evolved rather than been designed. The changes to 
Pike that have been made have been guided by its users' needs. In 
general, the better you get to know Pike, the more you will appreciate 
it, from a user's perspective. 
 
Pike is just as suitable for intricate and large applications as for 
creating use-once scripts. When needed, you can also write 
Pike modules in C, to gain better performance or access C 
libraries. This is transparent to the module's users; the modules 
written in C and those written in Pike are accessed in exactly the 
same way. 
 
A list of pros and cons with Pike follows: 
 
        + General Purpose Programming Language  
        + Freely distributed under GPL 
        + Interpreted - No compilation and linking needed to run code 
        + Object Oriented - Straightforward and powerful object 
          orientation, including multiple inheritance 
        + Modular - Extendible with modules written in C or Pike 
        + Powerful - High-level language, concise code 
        + Incremental - Allows on-the-fly modifications and recompilations 
        + Source Code Available - To promote sharing of useful code 
        + Portable - Platform independent and available on most flavors of Unix 
          At present the following platforms are supported: 
           
             Solaris 2.5 & 2.6 (Sun SPARC & Intel x86)  
             Digital UNIX 4.0  
             AIX 4.2.1 
             IRIX 6.3  
             SCO UnixWare  
             FreeBSD 2.2.2  
             HP-UX 10.20  
             Linux Red Hat 4.2 (Intel x86)  
 
        + Powerful, Flexible and Efficient Data Types 
        + Automatic Memory Management 
        + Scalable - as useful for small scripts as for powerful and 
          complex applications. 
        + Text Processing - e.g. for filtering 
        + Exception Handling 
        + Multi-Threaded Application Development Possible 
 
How Pike relates to other programming languages: 
         
        + Optimized - Faster run-times than Perl, Python, tcl and Java 
        + Faster Development than using C or C++ 
        + C-like Syntax - Easy to learn 
 
Below you will find a list of some desired but missing features, or 
cons, of Pike. As indicated by the version number 0.5, Pike is still 
under development and the goal is to incorporate those in future 
versions. 
 
        - No Pike native compiler or debugger available 
        - Limited image format import and export support 
        - Not optimal for heavy numeric processing jobs 
        - Not for GUI based applications 
        - Limited range of special effect image filters for image 
          processing 
 
 
Some successful applications using Pike include: 
 
        + Network Applications - as Client/Server applications 
          e.g. the Roxen Challenger Server and a range of server extensions 
               Mail Gateways 
               Client/server Protocol Implementations 
               Multi-User-Dungeons 
        + System Administration Tools & Utilities - Even as quick one-shots 
          e.g. adduser or adddomain scripts that setup users/domains  
               Real-time Client/Server Status Monitor 
        + Assorted Text Processing Utilities  
        + CGI Programs 
 
Pike is distributed accompanied by a set of modules, some of which are 
described below. 
 
 
Image - Image Processing Module 
 
The Image module lets you perform common image manipulation and 
processing operations from Pike programs. The supported operations 
include cutting and pasting, scaling, rotation, linear filtering of 
most kinds, rendering text, etc. Anti-aliasing can be used when 
performing any kind of drawing operation. Using the Image module, you 
can automate jobs that would otherwise have required tedious work in 
an interactive image processing program such as Adobe PhotoShop. 
 
Currently, the only input format is ppm. Output formats are ppm and 
gif. 
 
 
Sql - Interface to SQL Databases  
 
The SQL interface makes it possible to use common SQL databases from 
within your applications. It includes support for mSQL, MySQL and 
Postgres.  
 
 
MIME - Multimedia Internet Mail Extension Module 
 
This module makes it easy to create and decode e-mail, including 
attachments.  
 
 
Gz - Data Compression Module 
 
With this module you can compress data. Its name is slightly 
misleading, as it uses ZLIB. ZLIB uses the same compression algorithm 
as gzip, but the format for the compressed data is not compatible with 
gzip. 
 
 
Crypto - Cryptographic Toolkit 
 
The crypto toolkit is a set of objects implementing various 
cryptographic algorithms, as well as objects used to glue the other 
objects together. The toolkit includes block ciphers IDEA, DES 
(including tripple DES) and CAST, the RC4 stream cipher, the hash 
functions MD5 and SHA, and the public key cryptography algorithm 
RSA. It also includes a some randomness sources. 
 
The toolkit can be used for most kinds of cryptographic applications, 
including encrypted network connections, as well as encryption of 
files or other data.