'Picat' Programming Language Creators Surprised With A $10,000 Prize (bcexcelsior.com) 63
An anonymous reader writes:
"I didn't even know they gave out prizes," said a Brooklyn College CS professor, remembering how he'd learned that a demo of the Picat programming language won a $10,000 grand prize last month at the NYC Media Lab Summit. Professor Neng-Fa Zhou created Picat with programmer Jonathan Fruhman, and along with graduate student Jie Mei they'd created a demo titled "The Picat Language and its Application to Games and AI Problems" to showcase the language's ability to solve combinatorial search problems, "including a common interface with CP, SAT, and MIP solvers."
Mie tells the Brooklyn College newspaper that Picat "is a multi-paradigm programming language aimed for general-purpose applications, which means theoretically it can be used for everything in life," and Zhou says he wants to continue making the language more useful in a variety of settings. "I want this to be successful, but not only academically... When you build something, you want people to use it. And this language has become a sensation in our community; other people have started using it."
Mie tells the Brooklyn College newspaper that Picat "is a multi-paradigm programming language aimed for general-purpose applications, which means theoretically it can be used for everything in life," and Zhou says he wants to continue making the language more useful in a variety of settings. "I want this to be successful, but not only academically... When you build something, you want people to use it. And this language has become a sensation in our community; other people have started using it."
Picard language (Score:5, Funny)
Computer, make it so!
Re: (Score:2)
Just make sure that you have 5 years of experience because that's what all of the recruiters will be asking for.
Re: Picard language (Score:2)
That's why I invented Lie++
Re: (Score:2)
Just make sure that you have 5 years of experience because that's what all of the recruiters will be asking for.
That's why I invented Lie++
If you've got zero years experience, you'll need to invent Lie++++++++++
Re: (Score:2)
Don't you mean ++++++++++Lie
Re: (Score:2)
Re: (Score:2)
Re: Picard language (Score:2)
Re: (Score:1, Troll)
You sound hurt. These kind of paper tiger requirements were in job postings long before Americans started whining about H-1Bs.
Re: Picard language (Score:1)
Employers will always want more bang for their buck, they will always aim high for a candidate meanwhile competition domestically and globally will always work against the employee. Either we all join a Union or compete directly with these honchos, but who has that kind of money?
Re:Captain Sidies language (Score:2)
# It's better to burn out than it is to rust...
Re: (Score:2)
https://www.youtube.com/watch?... [youtube.com]
Using multiple languages (Score:2)
Re: (Score:2)
Yep, I agree, although I think "microservices" is better described as "any sort of specialized language domain", and is a little less buzzword-bingo-ready.
I recently finished work on a small embedded language that I'm using in my own projects. I published it on GitHub. Interest? Zero. Quite literally, no one else is using it, as far as I can tell. No worries, it's got one satisfied customer, and it's available for others to use if they want. It was hugely satisfying to design the language and work thr
Re: (Score:2)
Link please.
Re: (Score:1)
Latency between services (Score:1)
Re: (Score:1)
Old schoolers will inevitably complain about high latency between microservices. If this strongly matters, there are InfiniBand and PCIe fabrics for very low latency.
Service oriented has its place. I just get tired of it being branded as the cure all for everything. I've actually spent a lot of time working towards low latency near real time solutions, and now we have people wanting to push SOA everywhere, and to a large extent dismissing any latency or performance concerns as me just being an idiot or something. Sometimes all the extra layers do matter, and sometimes it just isn't worth the problems created for the problems solved. Of course a problem doesn't have
Lock-free writes (Score:1)
Re: (Score:2)
Re: (Score:1)
The one example that I've seen basically uses shared memory as an expandable pool of fixed-size elements (structs), using an enum to control the size. The real trick is to structure the thing so that one-and-only-one thread/process controls the writing, whereas many others can read with abandon. Those readers could send messages through a separate channel to request a status change, but they didn't directly write to shmem. I'm not aware of any method to handle true multiple shmem write access without some form of locking, though....
The one producer many consumer model works well with it. If you assume the producer and the consumer are disconnected, where the consumer _must_ keep up, or simply drop data, then you can do it just with basically a 64 bit integer that keeps track of the points added. The consumers each look at that integer and do a mod operation on it to find the real data in memory, as well as checks for likely data loss. (The consumer should not read a point that may be in the process of being written.) The consumer
Comparison with Prolog (Score:2)
standards (Score:1)
And this language has become a sensation in our community; other people have started using it.
That's a pretty low bar for 'sensation'
Re: (Score:1)
These Markov chain spam generators are getting better all the time!
Re: OpenSSL got like ~$2000 dollars a year (Score:2)
exageration much? (Score:3)
> theoretically it can be used for everything in life,
VM? garbage collector? no pointers? I'm not seeing anyone writing OS's, device drivers or any other low-level stuff in this anytime soon.
Re: (Score:3)
but this language can't even theoretically be used for everything; you can't write an OS kernel using it
Re: (Score:2)
Re: (Score:2)
Basically efficiency/performance and controllability of timing. Despite that many people would argue Java is as fast as C, it really isn't, so a kernel written in Java or any other high level language would be relatively slow and bloated (i.e. a memory hog).
Functionally, I dont see that inline assembly is an absolute necessity, but accessing memory mapped hardware and stuff like DMA registers would be, so you at least need pointers and to be able to dereference them.
Re: (Score:2)
PS: My statement about inline assembly not being necessary presumes you have a bootloader that intiailizes hardware, sets up stuff like ISRs and bootstraps the kernel. I'll never say anythings impossible but that would be a real challenge therefore stupid to choose to write in a high level language.
Re:exageration much? (Score:4, Interesting)
"... Picat "is a multi-paradigm programming language aimed for general-purpose applications, which means theoretically it can be used for everything in life," ..."
They better hurry. Perl is way ahead on the multi-paradigm thing.
Multi-paradigm will always kill readability until we accept that sequential plain-text files are unnecessarily limiting.
In programming, we're taught to keep lines short for readability, as something like "[i]x = ((i+j/a)+(x+5)/4*sin(s^x/4)/3)*2/6)+34[/i]" is so difficult to read that I can't be sure I've matched my parentheses without counting, and I can't tell what the calculation does. But if those divisions were rendered on-screen in the international standard mathematical way of placing the dividend over the divisor with a line in between (like the way vulgar fractions are presented) and the exponentiation was rendered by formatting the exponent in superscript (as is also standard), the whole thing would be instantly visually understandable to anyone with a good level of high-school maths.
You may not think that this has a lot to do with multi-paradigm, but maths itself is a paradigm (everything in computing could be achieved by direct manipulation of numbers -- it wouldn't be easy, but it would be possible) and it requires a rendering that is fundamentally different from flow control structures, for example.
And flow control has specific rendering requirements too: cf. the argument between block delimiters and semantic whitespace. Semantic whitespace exists basically because if you have non-semantic whitespace, the language semantics may not match what the reader sees, if there is line indentation that doesn't match the blocks. So get rid of all the whitespace, and let the editor render the indentation on-screen in a way that makes the logical structure immediately apparent.
Now imagine getting rid of "decorators" and just having a different font telling you clearly that you're looking at a different type of code. Suddenly we're free to start inlining SQL queries without a bunch of function call cruft and wrapping dynamically-created literal strings in procedures.
Re: (Score:2)
err... what? Split your code into multiple source files and open each one in a different colored emacs. Why does everything have to be so complicated?
Cross-calling is one of the nastiest things you can do in terms of efficiency, as all variables have to be checked as being valid in the callee environment. Strings are difficult enough, but arrays and lists vary dramatically between languages in their internal implementations. This is why people hardly ever cross-call (and when they do, it's typically to C, where they've coded up direct representations of all the required datatypes from the host language.)
Re: (Score:1)
(everything in computing could be achieved by direct manipulation of numbers -- it wouldn't be easy, but it would be possible)
Everything in digital computing, on the CPU (machine code) level IS achieved by direct manipulation of (only) numbers. And I mean EVERYTHING.
Re: (Score:2)
What you need is a powerful IDE that renders the old fashioned sequential plain text source code in the way you describe. I see no reason why that couldn't be done.[snip]
And there are good reasons to stick to plain text for source code. There are people who are more productive using powerful text editors such as vim than using heavy IDEs.
The reason they're more productive in plaintext is A) because the language is designed for plaintext, and B) they know the source code. The productivity problems really come in when you're dealing with code maintenance, which is a lot of the code lifecycle -- hell, most of us average mortals struggle to maintain our own source.
I have been in emergency situations where source code urgently needed to be fixed while the workstations with fancy IDEs weren't available due to other problems occurring simultaneously but a plain text editor and other basic tools were. When you have to get things done with more basic tools than you normally use it's important those tools can handle your code.
But if the IDE is the language, surely you would have the IDE on any machine using the language...?
And don't forget search tools, diff tools, merge tools, SCMs, etc. There are loads of useful and essential programs that work best with plain text. The simplicity of plain text has huge benefits.
What you're talking about is presentation. Keep that separate from the core, just like you keep your presentation layer separate from the domain logic in applications. In other words, implement your presentation requirements in your IDE and don't make the mistake of thinking that won't be able to handle plain text source code in a powerful way, otherwise you're likely to create more problems than you solve.
OK, I don't suppose there's any harm in the source code having a plaintext represent
Re: (Score:2)
Like your word processor is the English language, you mean? Like the hammer is the nail? You seem to have trouble with separation of concerns.
That's an invalid comparison. Computer programming languages are designed exclusively for the communication of instructions from a human to a computer. You can (if you want) write a piece of code on a bit of paper, but the main purpose of doing so (outside of the classroom) is to later input it into a computer so that the computer will do something. It's not for communication between humans, and the computer doesn't write responses to the programmer in the same language.
So we have something that is designed
Re: (Score:1)
In the 1980s I was working in insurance, specifically actuarial work which for historical reasons has many functions written with subscripts and superscripts. I considered, but didn't try implementing, a language which used up to three lines for a statement: a middle line for the basic statement, an optional lower line for subscripts, and an optional upper line for superscripts.
Recently, quite by chance, I discovered that a
gross. (Score:3)
Picat looks like what you get after Python eats Javascript and then vomits. I give it s/[stars]/1 star.
Re: (Score:1)
you forgot to end each sentence in a comma,
Re: (Score:3)
Picat looks like what you get after Python eats Javascript and then vomits.
Looks a lot more like Prolog which has swallowed an OO-flavour of Pascal actually.
Re: (Score:1)
Re: (Score:2)
Re: (Score:2)
wikipedia deletes knowledge that has little reference on the net, the kids running it don't realize most human knowledge isn't on the net