New S# Language - Smalltalk for .Net 47
curador writes "In an interview with David Simmons, CTO of SmallScript Corp., we learned about a new .NET language about to debut...." I was surfing around and found this article and had not noticed it on /. yet so start your flame engines please!"
Re:Nothing to flame (Score:2, Funny)
Re:Nothing to flame (Score:1)
Re:Nothing to flame (Score:2)
C# is closer to being the language part of the Java clone that
Re:Nothing to flame (Score:4, Insightful)
Re:Nothing to flame (Score:1)
Re:Nothing to flame (Score:2)
Well said. Applies equally to J2EE. I asked some techies a while ago how cant ANSI C/C++ code, if programmed skillfully, be better than J2EE. Use standard portable libs and you have portable code.
However J2EE is based on a huge pool of Compsci grads weaned on Java in their second year. J2EE is also quite mature and compliant with other companies and plays well with opensourced projects.
Re:Nothing to flame (Score:1)
Another Language :-( (Score:1)
My question is this... (Score:3, Funny)
Good for Smalltalk users (Score:5, Insightful)
So Smalltalk programmers, through S#, will be able to talk to DirectX or Gtk# or MySQL or whatever without someone having to come up with bindings or libraries or whatever they might otherwise need. Scary.
- Steve
Re:Good for Smalltalk users (Score:1)
Interface Neutrality, not Langauge (Score:4, Interesting)
TK & Plan9 get this right by using character and not binary interfaces [Unicode in Plan9s case].
In Plan 9's once you've written a program and exposed it in the Plan 9 way you don't even need libraries & whatnot.
take a look at my IRC bot written in shell script
http://www.proweb.co.uk/~matt/chugly.rc [proweb.co.uk]
making a network connection, pah, who needs a socket library
echo 'connect slashdot.org!80' >
Writing a user level file system to implement such things is a bit more complicated but again, once written *any* program can utilise them with the simple commands we all know and love : echo cat grep ls awk etc. etc.
Here's one I wrote to do google searches [proweb.co.uk]
Now every program on my system can do a google search using simple file operations. Even programs compiled *before* I wrote mine, such as awk.
Let's Make Unix Not Suck (Score:1, Interesting)
Miguel argues that piping is not a very good compenent model to build applications or systems.
In short:
Binary interfaces can have event interfaces.
Binary interfaces allow for strongly typed return codes, or can throw exceptions.
How do you do things like this with text/piping?
Who you gonna call (Score:2)
Miguel or Dennis Ritchie ?
I think Dennis gets my vote
9p != pipes (Score:2)
You did forget something
Binary interfaces cannot be [easily] interpreted by humans.
Which is a curse when you are debugging.
The only real difference between the binary and textual is that binary encoding is unreadable, eveything else is implementation dependent. Binary interfaces in and of themselves don't guarantee events or exceptions.
Which would you rather have
%cat
801 600
or
%cat
^C^U ^BZ
[that was the best I could manage for the binary output i took it from what vi reported, in hex it would be 0x0321 0x0258 and ASCII 0x03, 0x02 & 0x21 are somewhat difficult to represent in HTML]
Re:Interface Neutrality, not Langauge (Score:1)
First of all, I suspect that handling all interaction over pipes like this might be rather slower than binary interfaces, but I can ignore that for now.
The other concern is that it doesn't really matter that everything can be talked to as if it were a socket/file. Looking at your example:
echo 'connect slashdot.org!80' >
First of all, being brand new to Plan 9, I wouldn't know that I have to access
Secondly, not knowing how to use Plan 9 at all, I wouldn't know that the magic command is "connect slashdot.org!80" to open my connection. I would have to have a reference open to see which commands make sense.
So, what is the benefit?
As for programs compiled *before* you wrote yours, that is a standard concept for years now, interface-driven programming... In Linux, you can write your own filesystem driver, and then anything can use it just like any other filesystem, as long as you conform to the correct interface. You can do user-level filesystems in Linux, with the same results.
In Java and SmallTalk, I can use reflection capabilities to talk to everything as if it were an object. I can enumerate fields and methods, and invoke them dynamically.
Why is it better to talk to everything as a socket?
better than a new VM (Score:4, Interesting)
You are right that some knowledge is required up front to know what commands to issue.
One of the main advatages is the standardisation.
I presume you already know how to use cat, ls, grep, echo, > | & friends.
The use of familiair tools and a textual interface is to go with the "everything is a file" paradigm.
what to know where the mouse pointer is
%cat
play some audio
cat audio.pcm >
want to play it on another machine's soundcard ?
import -a machine
cat audio.pcm >
(permissions permitting of course)
Plan 9 has more to offer than just a few file semantics.
If you really are interested than a set of papers & all the manual pages are available. Installation is fairly straight-forward [hardware permitting] and there is a VMWare image also available.
Plan 9 isn't trying to be on everyone's desktop, it's more a market of ideas.
http://plan9.bell-labs.com/plan9 [bell-labs.com]
I can particularly recommend the plumber [bell-labs.com]. File associations are pretty limiting. Imagine a system where regular expressions and a few shell scripts do the work. I wrote a class browser for my PHP code so that right clicking $foo->bar(); would bring up the definition of ->bar from my PHP source code [which sits on a FreeBSD machine] and it took me about 15 minutes.
Re:better than a new VM (Score:1, Funny)
Sure. Let us know when it's available for the timex-sinclair, Atari 400, and commodore 64.
Re:Good for Smalltalk users (Score:1, Insightful)
Common Lisp on
Re:Good for Smalltalk users (Score:1, Flamebait)
Re:Good for Smalltalk users (Score:2)
Re:Good for Smalltalk users (Score:2)
... as long as your language of choice has a dialect that conforms to the CLS. That's why Visual Studio.NET's C++ compiler has a ton of "features" you need to use in order to be "managed" by the CLR.
What's next (Score:5, Funny)
Re: What's next (Score:1)
> Logo.net
Lego.net
Re:What's next (Score:1)
Re:What's next (Score:1)
(from a list of 160 different languages for the jvm here:
http://grunge.cs.tu-berlin.de/~tolk/vmlang
)
"StarLogo
StarLogo is a programmable modeling environment for exploring the workings of decentralized systems -- systems that are organized without an organizer, coordinated without a coordinator. With StarLogo, you can model (and gain insights into) many real-life phenomena, such as bird flocks, traffic jams, ant colonies, and market economies. StarLogo is a specialized version of the Logo programming language. With traditional versions of Logo, you can create drawings and animations by giving commands to graphic "turtles" on the computer screen. StarLogo extends this idea by allowing you to control thousands of graphic turtles in parallel. In addition, StarLogo makes the turtles' world computationally active: you can write programs for thousands of "patches" that make up the turtles' environment. Turtles and patches can interact with one another -- for example, you can program the turtles to "sniff" around the world, and change their behaviors based on what they sense in the patches below.
AJLogo
AJLogo is an implementation of Logo written in Java with about 400 primitives.
Turtle Tracks
Turtle Tracks is a modern Logo interpreter and runtime environment written entirely in Java. It is not a direct port of an existing interpreter, but written from the ground up specifically for Java, and designed to take advantage of the strengths of Java as a platform. Turtle Tracks is platform-independent and Internet-ready, and supports numerous advanced features such as multithreading and networking. Unlike some similar Java-based projects, Turtle Tracks is a complete implementation of true Logo, supporting the same basic language syntax and semantics and most of the same primitives as other common Logo implementations such as Berkeley Logo. It also supports plug-in primitive sets and can be integrated with outside Java code as a scripting language.
rLogo
rLogo is an easy to learn programming language designed for the World Wide Web. It is based on the Logo programming language.
Yoyo
Yoyo is a programming language loosely based on Logo. Since it integrates Java, however, many of the more advanced features require knowledge of Java and how its APIs work. (Was formely called Bongo)"
Re:What's next (Score:2)
An implementation of LOGO for the
MonoLOGO provides access to all
Runs on Linux and has a Gtk# console interface.
Smalltalk with Multiple Inheritance? (Score:3, Insightful)
Null handling (Score:3, Funny)
Oh yeah, sure, you've really eliminated the possibility of error. Why not add every method to the 'null' object while you're about it, then your program could _never_ have null-related bugs!