|
@jadr2ddude
you can use linux, but inferno (as plan9, as qnx, they all used same ideas) was designed especially for building systems distributed by network.
where many computers from different places work as single computer.
inferno and plan9 designed by bell labs, the father of unix, C, C++ and other
these were military projects (yes, it was not a joke when i named it skynet. it was the real development and inferno planned to be a core of real network of military things (rockets, tanks, avions, your army knife))
because of military order they were closed long time.
inferno was designed for highest portability (for example it can run on top of other OS as framework or without OS on bare hardware)
and easy programming. it has 2 languages interpreted sh (my examples here in sh) and compiled limbo (it looks like something between C++, pascal/oberon with some very highlevel constructions like from python, and it has easy to use multithreading system with mutexes, channels etc embedded directly into the language (as go or xc))
it also includes graphical sourcelevel debugger like ddd (also was writen in limbo and can work without recompilation)
it can be compiled under linux (and windows and mac and other) in minutes.
it has as minimum 3 pluses
1. you can develop your program on any system you want and run on other system without recompilation as it is a virtual machine
2. it is significally faster then other VMs including java and .net because of internal architecture, and because of jit compilers for most of architectures (x86, arm, mips, sparc, power)
3. it takes less of resources, thanks to very good garbage collector (when i tested it on win ce it took only 7-8mb with gui environment and pair of programs runned)
also it provides many abilities now absent in regular OSes or programming languages (maybe excluding go - a son of limbo, and xmos xc - also looks like limbo)
a example - how to browse/parse webpages directly from shell:
```
ndb/cs #start connection service
fn rd_foo { #foo to read a page
id=$1
{
echo 'GET /orangepibbsen/forum.php?mod=viewthread&tid=1459&extra=page%3D1 HTTP/1.1' &&
echo 'connection: close' &&
echo 'host: www.orangepi.org' &&
echo ''
} > /net/tcp/$id/data #send a regular GET query to server
cat /net/tcp/$id/data #output received from server page to terminal
# var=`{read < /net/tcp/$id/data} #or catch it to variable for parsing as example
}
fn get_opi_forum { #foo to connect to a server
(null ip)=`{ndb/csquery net!www.orangepi.org!http} #get the IP of the server
# echo $ip # you can see received IP
{
id=`{read} #get the id of just opened tcp channel
echo connect $ip > /net/tcp/$id/ctl #connect tcp channel $id to your server
rd_foo $id #run the foo to read a page
} <> /net/tcp/clone #by opening this file new tcp channel creates, by closing closes
# <> - mean - open for read and write and no close till the end
# of all commands between {}
}
get_opi_forum #do the main foo
```
(all examples till now were in sh. inferno allows to make much operations with sh then linuxes' bash, for example regular replace, building of GUIs)
(limbo runs faster then sh but it will be in the future)
you can call commands of hosting OS from sh using command "os" and send/receive data from it to inferno
```
os <command string of hosting os>
```
next time i try to write how write a extension to inferno callable as limbo module in C (inferno contain a special tool to help in writing of C extensions)
|
|