Web Apps Language Opa Gets a Web-Based IDE
First time accepted submitter koper writes "The new programming language Opa makes web programming easier by providing a one-tier one-language-for-everything approach. Now it goes one step further by providing a (very-minimalistic for now) web-based IDE that allows users to compile & deploy Opa programs in one click in your web browser. Give it a spin!"
Off-topic yet insightful.. oO
Things like this would be a really nice way to introduce people to programming, 0-setup and they can just 'start' with some examples
As someone who has taught programming at summer camps, tutored college intro programming and other such classes, I can see this being nice for not only 'new' people, but also anyone just wanting to 'play' with the language.
It's nice to see someone presenting an honest assessment of their technology's actual capabilities instead of trying to spin it into something more than it is with buzzwords like "artificial intelligence".
"Opa is a concise and elegant language for writing distributed web applications."
It looks tighter than something like Java or C#, but it's still tied to manipulation of the DOM structures through, so it does require a solid understanding of the underlying web technologies, XML, and HTML. I don't think there's any way of avoiding that, though, because unless you expose the low-level capabilities, you limit the expressiveness of the final system.
There are no magic bullets. Tools may make it easier or do more work for you than others, but sooner or later you need human intelligence to tie it all together and make it useful.
I do not fail; I succeed at finding out what does not work.
Bravo! This is why I browse with all comments on. +5
Makes it sound very outmoded in Dutch, German, and perhaps a few other languages around the world.
Neat, but that site wont work with NoScript installed unless you allow XSS.
Not a huge problem for some, but is a deal breaker for me.
unless there's a workaround?
What the hell kind of name is "Thurston"?
Another language to learn? Man, these pop up like mushrooms after rain.
Google Web Toolkit allows you to create nice web client applications without any significant knowledge of HTML or CSS. Instead, you have to know the GWT Java classes (not JavaScript; it gets translated into that automagically). I used it in a real project and had to deal with CSS only to make it "nice to see".
are we going to get a writeup on slashdot every time oracle releases a new version of peoplesoft? because this closed pay-only platform is just about as good and has way way way less users. I feel like I'm reading fucking bitcoin stories--nobody fucking cares!
Thurston Moore is singer/guitarist for Sonic Youth, I like them.
That's what happens when people don't know assembly, C and Python. Those are the only three languages you'll ever need to know for doing any type of programming.
You use C and assembly when you need to interface with hardware, when you need to keep your software small, when you need speed, or when you need absolute control. You use Python for everything else, including web development, text processing, scientific computing, servers, and desktop applications.
Given how easily Python interfaces with C, and how easily C interfaces with assembly, you have a perfect stack for every kind of programming problem imaginable. You can easily combine them as necessary to solve your problem quickly and properly.
There are high quality free and open source implementations of each, and they are supported in some form or another on just about every worthwhile platform available. No other languages or platforms come close.
Python is just a superset of C that some ass wrote because he thought it would be cute to have an invisible block closure/. I am forking python and adding a customizable block closure so people have the choice to be handcuffed by indentation as block closure if they are really that stupid.
If you know C and assembler you know ever stinking POS scripting language that has come down the pike, since every last one of them is nothing more then a C derivative.
Hey KID! Yeah you, get the fuck off my lawn!
Thurston Howell III was the rich, old guy on Gilligan's Island.
Learning HOW to think is more important than learning WHAT to think.
What, you normally don't indent your code? Are you a rebel who leaves it all left-justified? Is that why you have such a problem with Python's indentation approach?
Bah, C is just syntactic sugar over assembly, anyway.
(In other words, you're an idiot that has completely missed the point of scripting languages.)
Except of course when you need to pay the rent and the project is in Java, or C++, or PHP, or... (etc.).
With those minor exceptions, you're right. :)
For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
So much for browsing +5. You just got trolled.
I browse at -1. The + 5 was for the post.
You use C and assembly when you need to interface with hardware
Which language feature is it that enables C to interface with hardware? Were you thinking of pointers? Seriously?
I think you are under the growing misconception that C is "close to the hardware."
"His name was James Damore."
Yeah, you're saying "get off my lawn" and you're not advocating toggling the switches manually to input your program? You fail old age. (That, and try doing regexes in C...)
I feel fantastic, and I'm still alive.
This has been circulating for at least a decade. I saw it first (which was the only other time I've seen it) over a decade ago, on alt.tasteless (Usenet).
I feel fantastic, and I'm still alive.
Are you for real? Are you fucking serious? ARE YOU FUCKING KIDDING US?
Virtually all production-grade C compilers allow some form of inline assembly code. Depending on the hardware in question, this will allow you to do such things as use processor-specific opcodes, write to various processor and controller registers, and otherwise interface directly with hardware in ways that cannot be done from many other programming languages.
Furthermore, C gives exceptional control over the layout of data in memory, far beyond what many other languages allow. Yes, pointers do help with this. This is often essential when interfacing with hardware.
Don't take my word for it either, fool. Just go and see how almost every embedded and non-embedded OS today is written in C. For crying out loud, they usually make it damn easy to write device drivers (yes, device drivers which interface directly with hardware!) written purely in C! Go look at the source code to the fricking Linux kernel if you don't believe me. You'll see almost all of it written in C, including the device drivers.
You need to drag your sorry Rubyist ass back to reddit, where the utter bullshit you're spouting out has a place. Your misbehavior is just not tolerated here. Rockoon, you make us all sick with your nonsense.
If you did not have to worry about minimum latency issues / tuning your code by adding NOP's or fiddling with the addresses of particular words in storage to achieve optimum execution times, or have never heard the words "Mercury Delay Line", you've no idea of what old age is, "dude".
I get the conceptual framework of deploying a single "binary" to everything.
Here's what I don't get: Why invent a new language, bound to a framework and to a specific target application, rather than adapting an existing language to the task? What can I do with Opa that I can't with JavaScript?
Don't thank God, thank a doctor!
I've actually tried to follow through the site - installing the compiler, reading the manual and trying it out. First impressions:
1. The language itself is just a bastard sorry child of ocaml and erlang.
2. Both parents are specific languages with steep learning curve.
3. Using powerful paradigms with necessary horrible syntax makes no sense here - especially when webapp developers are your target audience.
4. Opa brings a lot of hidden "gay magic" (all-in-one binary, the whole client/server rpc thing, objectified xhtml), yet fails to deliver something meaningful.
5.To clarify the above, it doesn't make database models, templating, forms or MVC in general any easier - there is NO sweet spot hit as seen in ruby on rails or web2py - in fact, it's very, very lowlevel with neat erlang-like client/server model behind the scenes.
Database, or better said, the lack of thereof, is a topic in itself:
1. in OPA, there's a persistent storage of key/value, with a single index over it.
2. no SQL, not even noSQL, no nothing. if someone manages to actually query some fields past key/value storage, please enlighten me.
3. I suppose this is for the better, since well, we don't need to use real database queries in webapps, right? uh...
Note that these are first impressions, not necesarily correct. OPA is very interesting from academic standpoint - in fact its origins are in academia. Damn undergrads should know their place - ocaml, erlang even scheme never proven to be useful past np-hard problems. As far webdevs are concerned, we just want our import flying
Opa is a really interesting design but it's AGPL, so it can't be used for any closed-source apps, even if hosted on a server. Maybe they will dual-license it in future, but right now it's only for open source work.
Okay, so this is the sixth new platform I've reviewed in the last year that has its own built in web server. Why? It's a complete pain in the ass to manage platforms that are built this way. Most of the time, the servers they come with are not as good for general purpose use as Apache, and well, because they require their own servers... you can't really run them on a traditional server if you wanted to. Now, I understand the need and desire to change the paradigm. I've been there. I've tried to do it. But the web server paradigm EVERYONE ELSE USES is not broken. Why the hell is everyone trying to replace it with something that is untested, that doesn't work as well? Why can't someone design a precise, straight forward language that plugs into my web server, which allows me to scale and thread properly to billions of connections? I'm not asking for a lot. Other than I'm asking for a lot. Apparently.
This signature has Super Cow Powers
Spoken like someone who didn't take Python seriously enough to even learn the basic syntax. Well done sir. This kind of ass hattery is epic. I aspire to it. Thank you.
This signature has Super Cow Powers
Some people can't think without brackets. These kinds of people don't understand anything but C, and never will. You should feel sorry for this clod. He's earned it.
This signature has Super Cow Powers
When I think about paying rent, I ask myself what languages are in the highest demand, but the lowest supply. Usually some framework subset, or cms in php. Php is great. Easy, fast, flexible. And you won't have any problems with it if you think like a C++ programmer.
This signature has Super Cow Powers
He doesn't like excess whitespace because he is programming with it
-- no sig today
Everybody knows that real programmers program the logic gates directly, no sugar there!
-- no sig today
After spending a week with Opa, I had to conclude that the database is next to useless for anything more than the most trivial database operations. A couple of queries on the mailing list led to "I'll find someone to answer that" responses, but with no further action. I'll keep reminding them every month, but I don't hold out much hope.
He doesn't mention his age. For all we know, he could be 13 years old, but just be smart enough to know the truth of the matter. What he says is right, regardless of age. Furthermore, regular expressions are not at all difficult to do in C. The GNU C library has good support for regexes, and there's always PCRE if you're not using the GNU C library. Both make using regexes from C very trivial.
What, you normally don't indent your code?
Sure, I do...but I don't necessarily indent my code YOUR WAY. I indent to my preference.
Sometimes, I put entire if statements on a single line! Not to be contrary, but because they're just that damned simple. Of course, not in Python......
"Lame" - Galaxar
We had what you prefer for like a decade now and you know what? It sucks. Like PHP is somehow the the pinnacle of how application development should be. Hah!
Not to mention the fact that managing Apache httpd or Nginx with generic language "plugins" is about as intuitive as tying your shoes using a robotic atm controlled by a BlackBerry.
Also, please tell me how this model of development "doesn't work well?" If it doesn't work well no one will use it. Problem solved!
Why don't you take a break from this old school, all-problems-have-been-solved web of yours and go tell some kids to get off your lawn.
-Riskable
"Those who choose proprietary software will pay for their decision!"
..you can write a web app in assembly language. It will just be more time-consuming do develop than using perl, C#, Java, GWT or similar technologies. It will probably be much smaller in memory footprint and much faster in execution perfomance, though. I guess the number of security problems will also be higher with assembly language, similar to using C.
Take a look at Google Web Toolkit. The default model is to use Java (not JavaScript; Java is translated into JS for the client side) both one the client and the server side. But if you are not happy with this model, you can of course use a different language/runtime on the server (such as Perl, C# or C++). As I said before, it is not a panacea, but a nice model IMO.
I don't know enough about C, so this may just be failed speculation, but...
C allows you to break out into ASM code, fine. But unless what you break out into is in fact an extension of ASM that includes some understanding of the C domain for integration - that is, IF you only break out to standard ASM that has no clue that it is embedded in a C program (this is my unfounded assumption) - then I see no theoretical difference to a langauge that can just call out to a component written in ASM. In other words, if C is considered to be able to "access the hardware directly" only because it can call out to ASM code, then Python could be considered to be able to "access the hardware directly" because it can call out to C which can call out to ASM. Sure, two layers of indirection is more than one, but they are both in the same camp of being more than zero layers of indirection away from the hardware.
That’s the classic silver bullet syndrome I have seen all around: “All the problems have to be solved this way, cuz that’s the correct way to solve them”. Is natural a new platforms will have bugs, but sticking to classic paradigms will kill innovation.
Uh I now have apps that run LightHTTPD as well as Nginix, and my server also must run apache.
And of course, they required their own port number, and it's hard to distribute that to my users, so all of these websites are access via an apache proxy.
So it's Apache proxy -> nginix ...
and Apache proxy-> LightHTTPD
what's the goddamn point really? Either way I must use Apache, I wish they would just use whatever webserver I want and not force me to run 3 webservers at the same damn time.
Well, what he's saying is that there's no reason to reinvent the wheel of handling hypertext transfer protocol requests. While I agree that small tools doing specific things is the best way, and the unix way, to build that on the internet by making little webservers as some kind of hack on top of Unix ports and IP addresses is just wrong. There has been great interprocess communication and lots of other work that's been built on for 50+ years in computers. Things are the way they are for a reason. Some of them are bad reasons that are no longer valid (i.e. conserving memory by increasing complexity), but some of them are valid. Interprocess communication is complicated. You can't just do it all on a javascript client connecting to 20 or 30 different servers. You're going to need some type of layer 7 routing and probably authorization and compression and who knows what else. All of that is handled in say Apache and it's in a modular way. Now, the important thing about Apache is that it is sort of the reference implementation of httpd, but that doesn't mean some other small specialized server can't work in very special cases. httpd is not the most complex protocol to have some C-library made for it that can just be compiled in to a new application language. Look at all the UNIX tools that use OpenSSL libs, which change practically weekly and are extremely complex.
So I guess I agree with both of you; yes, having a little webserver to configure for every little tool is not necessarily efficient, but it IS a pretty standardized interface that a lot of "regular" (i.e. non-computer scientist) people can understand. So there's no wonder it's being used for lots of stuff it's not really designed for. I mean, GET, PUT, POST, you can't make it any easier. The issue is that it's not really designed for transactions, or anything reliable, and it's definitely not a very scalable protocol. Google has SPDY, and that's still not what's needed. I feel like in the next 5 years there will be a new version of HTTP that implements transactions and connections and sessions and all that which will greatly simplify the application language side. .
C uses braces to delimit blocks, not brackets.
Having explicit block delimiters is quite useful actually. It makes it possible to copy and paste blocks of code around without changing its meaning. Modern IDE editors use the braces to magically work out how it should be indented without you having to insert spaces.
Any syntax in which characters you can't see are syntactically significant is asking for trouble, in my opinion. Then again, lots of really good code has been written in Python, so I may just be a bit paranoid.
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
Also, please tell me how this model of development "doesn't work well?" If it doesn't work well no one will use it. Problem solved!
News Flash: No one uses Opa.
Why can't someone design a precise, straight forward language that plugs into my web server, which allows me to scale and thread properly to billions of connections? I'm not asking for a lot.
Have you looked at G-WAN (http://www.gwan.com/)? It ticks all those boxes, though probably not in the way you expected.
Spoken like someone who can't read.
There is nothing particularly wrong with the syntax of python, it is a fine scripting language.
What is wrong with it is that the author decided that his indentation style was better then anyone else and he coded his interpreter to enforce his stylistic view. Forgive me, but having an invisible block closure characters is stupid and wrong and that is why I am forking it and recoding it so that you can have your choice between something invisible and a curly brace ( which just happens to be the block opening ) as a block closure.
Hey KID! Yeah you, get the fuck off my lawn!
My Error, it does not use a curly brace to open a block.
But it will!
Hey KID! Yeah you, get the fuck off my lawn!