Linked by Thom Holwerda on Mon 11th Feb 2013 22:59 UTC
General Development "I feel like writing about the Go programming language (or 'Golang') today, so instead today's topic is computer stuff. For the record, the language I've programmed the most in has been Python, so that’s the perspective I'm analyzing it from." Some good and bad things about Go.
Thread beginning with comment 552208
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[2]: Meh
by Jondice on Tue 12th Feb 2013 13:25 UTC in reply to "RE: Meh"
Jondice
Member since:
2006-09-20

You may want to check out the ATS language, though I'm still warming up to the "look" of the syntax. No time to post my thoughts, so here's the blurb from their site. (There's also a kernel and some linux drivers written in ATS):

"ATS is a statically typed programming language that unifies implementation with formal specification. It is equipped with a highly expressive type system rooted in the framework Applied Type System, which gives the language its name. In particular, both dependent types and linear types are available in ATS. The current implementation of ATS (ATS/Anairiats) is written in ATS itself. It can be as efficient as C/C++ (see The Computer Language Benchmarks Game for concrete evidence) and supports a variety of programming paradigms that include:

Functional programming. The core of ATS is a functional language based on eager (aka. call-by-value) evaluation, which can also accommodate lazy (aka. call-by-need) evaluation. The availability of linear types in ATS often makes functional programs written in it run not only with surprisingly high efficiency (when compared to C) but also with surprisingly small (memory) footprint (when compared to C as well).

Imperative programming. The novel and unique approach to imperative programming in ATS is firmly rooted in the paradigm of programming with theorem-proving. The type system of ATS allows many features considered dangerous in other languages (e.g., explicit pointer arithmetic and explicit memory allocation/deallocation) to be safely supported in ATS, making ATS a viable programming language for low-level systems programming.

Concurrent programming. ATS, equipped with a multicore-safe implementation of garbage collection, can support multithreaded programming through the use of pthreads. The availability of linear types for tracking and safely manipulating resources provides an effective means to constructing reliable programs that can take advantage of multicore architectures.

Modular programming. The module system of ATS is largely infuenced by that of Modula-3, which is both simple and general as well as effective in supporting large scale programming.

In addition, ATS contains a subsystem ATS/LF that supports a form of (interactive) theorem-proving, where proofs are constructed as total functions. With this component, ATS advocates a programmer-centric approach to program verification that combines programming with theorem-proving in a syntactically intertwined manner. Furthermore, this component can serve as a logical framework for encoding deduction systems and their (meta-)properties.

What is ATS good for?

ATS can enforce great precision in practical programming.

ATS allows the programmer to write efficient functional programs that directly manipulate native unboxed data representation.

ATS allows the programmer to reduce the memory footprint of a program by making use of linear types.

ATS allows the programmer to enhance the safety (and efficiency) of a program by making use of theorem-proving.

ATS allows the programmer to write safe low-level code that runs in OS kernels.

ATS can help teach type theory, demonstrating concretely the power and potential of types in constructing high-quality software."

Edited 2013-02-12 13:28 UTC

Reply Parent Score: 5

RE[3]: Meh
by moondevil on Tue 12th Feb 2013 13:51 in reply to "RE[2]: Meh"
moondevil Member since:
2005-07-08

I have been following it for a while as well. ;)

My strong points in the university were distributed computing and compiler design.

As such I try to keep up with research on programming languages.

Reply Parent Score: 2

RE[3]: Meh
by satsujinka on Tue 12th Feb 2013 17:23 in reply to "RE[2]: Meh"
satsujinka Member since:
2010-03-11

I've started perusing ATS' tutorials but like you I also had syntax issues.

Reply Parent Score: 2

RE[3]: Meh
by vivainio on Tue 12th Feb 2013 19:39 in reply to "RE[2]: Meh"
vivainio Member since:
2008-12-26

By your description, ATS seems like pretty much an opposite of Go, philosophically. Go aims to be pragmatic above all.

Reply Parent Score: 3

RE[4]: Meh
by Jondice on Tue 12th Feb 2013 20:09 in reply to "RE[3]: Meh"
Jondice Member since:
2006-09-20

I think that ATS may be pragmatic, especially in kernel land or "mission critical" code, sort of like a new spin on . Go is probably not the best comparison; I was posting that as a followup on a comment about Rust, D, and C++. More apt would perhaps be as a functional alternative to Ada+SPARK, though my initial impression is that it would have many improvements on these in the way of proof facilities and type system flexibility. But, that's just my impression ... I'm certainly no expert.

Reply Parent Score: 3