Hacker News new | past | comments | ask | show | jobs | submit login
Picat 1.0 has been released (picat-lang.org)
13 points by callmekit on Apr 4, 2015 | hide | past | favorite | 3 comments

These slides [1] do a better job than the website explaining what Picat is.

One of the slides explains the main features of the language:

* Pattern-matching: Predicates and functions are defined with pattern-matching rules

* Intuitive: Assignments, loops, list comprehensions

* Constraints: CP, SAT and LP/MIP

* Actors: Action rules, event-driven programming, actor-based concurrency

* Tabling: Memoization, dynamic programming, planning, model-checking

Now you know why it is called picat...

I think this website could make a better job on "selling" Picat to potential users. Some suggestions for the author of the site, in case he reads HN:

* Do not put the sources behind a wall (Google Form), that only decreases the chance someone will try your language.

* Let people know how you license the project more visibly [2], may be in the footer of your site.

* Use syntax highlighting to improve the readability of the code examples.

* If possible, get a designer to help you with the aesthetics. If the source of Picat's site was hosted somewhere it would make it easier to fix it by a volunteer.

1: http://picat-lang.org/download/picat_tutorial.pdf

2: http://mozilla.org/MPL/2.0/

slide #3: "Too close to Haskell".

From the announcement on the Picat mailing list:

We are pleased to announce the release of Picat version 1.0.

Picat (http://picat-lang.org) is a new programming language that integrates logic programming, functional programming, dynamic programming with tabling, constraint programming, and scripting. Picat incorporates many language features for better productivity of software development, including pattern-matching rules, explicit non-determinism, explicit unification, functions, constraints, and tabling. It is not rare to find problems for which Picat requires an order of magnitude fewer lines of code than many other languages.

Since the first release in Februrary 2014, Picat has been growing steadily, and many users have had very positive experiences with the language: Hakan Kjellerstrand's Picat page (http://www.hakank.org/picat) has about 775 programs written by Hakan; the page http://picat-lang.org/projects.html has a collection of over one hundred programs for a variety of projects and competitions; as part of the VK Cup, the site http://codeforces.com featured Picat in a surprise round of a competition, and more than 500 teams competed.

Picat's tabled planner has been shown to be an efficient tool for modeling and solving planning problems. Roman Bartak, Agostino Dovier, and Neng-Fa Zhou have hand-coded several models in Picat for the IPC competition problems (http://picat-lang.org/ipc14). These declarative models exploit Picat's features by using structural state representations and common-sense domain knowledge. These Picat models significantly outperform PDDL encodings run by the best PDDL planners. Sergii Dymchenko has also demonstrated the promise of Picat's planner through several AI planning problems, including problems from the Google Code Jam competition (http://sdymchenko.com/blog/2015/01/31/ai-planning-picat).

One of the major additions made since version 0.1 is an optimizing SAT compiler, which translates high-level constraints into efficient CNF codes to be solved by a SAT solver. The SAT compiler is offered as a separate module, which has the same interface as the CP module. The SAT module is complementary to the CP module, and, for many problems, significantly outperforms the CP module. The SAT compiler has been tested by using hundreds of benchmarks and tens of thousands of instances that have been used in CSP and Minizinc competitions.

Another major addition in version 1.0 is an external language interface with C, through which Picat programs can call deterministic predicates that are written as functions in C. This interface can be used to link Picat with other systems, such as database, GUI programming, mobile computing, game programming, networking, and web programming libraries.

Since the release of version 0.1 about one year ago, hundreds of improvements have been incorporated into the design and the implementation. The updates log can be seen at: http://picat-lang.org/updates.html. Picat will continue to grow, and we look forward to your input and feedback. Send your questions, comments, and requests to:


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact