background preloader

Languages

Facebook Twitter

Shen. Rust, an Anti-Sloppy Programming Language. Disclaimer: The taste for programming languages is very subjective, so is this blog post.

Rust, an Anti-Sloppy Programming Language

Please take it with a grain of salt. Several new programming languages emerged recently. Among them, Rust particularly interests me. In this blog, I’m going to share my impressions of Rust, and compare it with some other programming languages. The barrier to learn Rust It took me a few tries to jump into Rust. The language has been changing rapidly. The pros Rust has many strengths. Memory safety without GC This is arguably Rust’s most significant achievement. Indeed, Rust programmers can write unsafe code in an unsafe block, but (1) the programmer must do so intentionally, and (2) the unsafe blocks could be limited to a very small percentage of the code base and put under close scrutiny. Garbage collector is the most common way to address memory safety. RAII on resources RAII is a strange term but conveniently conveys the idea. Concurrency without data races Algebraic data type The cons (sort of) The Slate Programming Language. Proposal for a Friendly Dialect of C. [This post is jointly authored by Pascal Cuoq, Matthew Flatt, and John Regehr.]

Proposal for a Friendly Dialect of C

In this post, we will assume that you are comfortable with the material in all three parts of John’s undefined behavior writeup and also with all three parts of Chris Lattner’s writeup about undefined behavior. Additionally, this paper is excellent background reading. C compilers generate faster and smaller code by assuming that the compiled program will never execute an undefined behavior (UB). Each time a compiler exploits a new kind of UB or increases the optimizer’s reach in other ways, some code that previously worked will break. Thus, compiler upgrades cause consistent low-grade headaches for developers and maintainers of large bodies of C code. A Treatise on Cosmos —the New Programming Language. A Treatise on Cosmos — the New Programming Language Alright, guys.

A Treatise on Cosmos —the New Programming Language

Today I want to talk about programming. It is interesting to note that I have solved it. Yes, I solved it. Here are my credentials. Red/red · GitHub. Essays/Incunabulum - J Wiki. J Home. About:jisp. Converge. This document is intended to give programmers familiar with other programming languages a quick introduction to Converge, essentially pointing out those things that may be different from other languages; it is not intended to be a complete, thorough reference manual.

Converge

After reading this document you will probably want to read the modules reference manual which documents the standard library, or the guide to compile-time meta-programming which documents Converge's macro-like facilities. Concrete syntax Since the direct interaction with Converge is through its concrete syntax in the form of source code in a text editor, let us establish the general rules for representing Converge code. Laurence Tratt: Parsing: The Solved Problem That Isn't.

Updated (2014-10-24): If you find this article interesting, you may be interested in the follow-up article on an editor for composed programs.

Laurence Tratt: Parsing: The Solved Problem That Isn't

Parsing is the act of taking a stream of characters and deducing if and how they conform to an underlying grammar. For example the sentence Bill hits Ben conforms to the part of the English grammar noun verb noun. Parsing concerns itself with uncovering structure; although this gives a partial indication of the meaning of a sentence, the full meaning is only uncovered by later stages of processing. Parseable, but obviously nonsensical, sentences like Bill evaporates Ben highlight this (the sentence is still noun verb noun, but finding two people who agree on what it means will be a struggle).

As humans we naturally parse text all the time, without even thinking about it; indeed, we even have a fairly good ability to parse constructs that we've never seen before. The general consensus, therefore, is that parsing is a solved problem. Paul Chiusano: The problematic culture of "Worse is Better" [ culture tech ] Our industry has been infected by a dangerous meme, and it’s one that hasn’t been given its proper scrutiny.

Paul Chiusano: The problematic culture of "Worse is Better"

Like many memes that explode in popularity, “Worse is Better” gave a name to an underlying fragment of culture or philosophy that had been incubating for some time. I point to C++ as one of the first instances of what would later become “Worse is Better” culture. There had been plenty of programming languages with hacks and warts before C++, but C++ was the first popular language deliberately crippled for pragmatic reasons by a language designer who likely knew better. That is, Stroustrup had the skills and knowledge to create a better language, but he chose to accept as a design requirement retaining full compatibility with C, including all its warts.

Dylan: the harsh realities of the market. So, this is a little case study.

Dylan: the harsh realities of the market

I did everything for Dylan. And when I say everything, I mean everything. Here's my resumé: I got excited about Dylan as a user, and I used it. I bought an old Mac that I don't ever remember the designation for, it's so '90's old, and got the floppies for the Dylan IDE from Apple research. Typographic Programming Language. Ar-nelson/lcon. Alice Pascal. One of the first projects I did after forming Looking Glass Software Limited was a syntax-directed programming environment called Alice: The Personal Pascal.

Alice Pascal

Syntax-directed editors are somewhat controversial, however I think they are quite good for people learning programming, and Alice was written first to be used in education in the school systems of Ontario. Our first sale was a contract to develop it for the Ministry of Education there. ALICE was also ported to run on the IBM PC under DOS and the Atari ST, and a Basic version was made only for the Ontario schools. The PC version was sold by a company called Software Channels Inc., a division of Graham Software. Graham Software, at least according to allegations made in parliament, turned out to be something of a sham, and it closed its doors 7 months after launching ALICE.

You can still read a review of the Atari ST version on the net! LewisJEllis/awesome-lua · GitHub. Entropy - andrew-hoyer.com. Sorry it looks like your browser does not support Entropy :(You may want to look into trying out the latest version of chrome, safari or firefox.

Entropy - andrew-hoyer.com

Entropy is a programming language about giving up control. All data decays as the program runs: each value alters slightly every time it's used, becoming less precise. An Entropy programmer needs to abandon the pursuit of precision which most programming demands—often working against years of habit—in order to program effectively. Any output from an Entropy program will be approximate, and the more the data is accessed, the more random it will become. The programmer has, at best, a short window to get his/her idea across before the program corrodes.

Documentation. Blag – Agda by Example: Sorting. Agda?

blag – Agda by Example: Sorting

The Haskell programmer is used to the pleasure of collaborating with a nice type system. Haskell itself hits quite a sweet spot of expressivity and manageability—type inference is (mostly) decidable, no subtyping, etc. However, in the past 30 years, new systems have been emerging that allow the user to encode many more properties at the type level. In fact, these systems are so expressive that they are often used as logical frameworks for mathematics rather than to write programs, and are thus often called “theorem provers” rather than “programming languages.” Thanks to a notorious correspondence, we know that these two activities are really the same. Agda is one of the most prominent systems of this kind at the moment. The Wyvern Programming Language. Chapel: Chapel Home. Idris - Nimrod by Example - Main. Articles/2014_matrix_cheatsheet_table.html. The Weird and Wonderful Characters of Clojure.

A reference collection of characters used in Clojure that are difficult to "google". Descriptions sourced from various blogs, StackOverflow, Learning Clojure and the official Clojure docs - sources attributed where necessary. Type the symbols into the box below to search (or use CTRL-F). Sections not in any particular order but related items are grouped for ease.

If I'm wrong or missing anything worthy of inclusion tweet me @kouphax or mail me at james@yobriefca.se. Swift Tutorial. Table of Contents 1. Introduction Swift is a programming language and system for building web applications. Applications are written as if they were desktop programs in a Java-like source language. The development model is very similar to AWT or Swing applications, with graphical widgets and event handlers associated with them. The Swift compiler transforms the single-host sequential program into two separate programs, one running on each of the clients and the other running on the server. 2. The Swift sources can be obtained from here. CLaSH.Tutorial. CλaSH (pronounced ‘clash’) is a functional hardware description language that borrows both its syntax and semantics from the functional programming language Haskell. The merits of using a functional language to describe hardware comes from the fact that combinational circuits can be directly modeled as mathematical functions and that functional languages lend themselves very well at describing and (de-)composing mathematical functions.

The CλaSH compiler transforms these high-level descriptions to low-level synthesizable VHDL. Although we say that CλaSH borrows the semantics of Haskell, that statement should be taken with a grain of salt. What we mean to say is that the CλaSH compiler views a circuit description as structural description. This means, in an academic handwavy way, that every function denotes a component and every function application denotes an instantiation of said component.

Rubicon : A Machine-Building Puzzle Game. Rubicon is a machine-building puzzle game, based on Chris Pressey's RUBE programming language. Using a selection of bulldozers, pipes, conveyor belts and other mechanisms, you must build machines to transport numbered crates to their destinations. Each playable game level has one or more targets - if a target has the same crate above and below it, it lights up green (if the crates are different, it lights up red). To complete a puzzle level, you must make all of its targets light up green. Rubicon comes with twelve pre-built puzzle levels. To play levels that other Rubicon users have designed, or to design and share your own, the Rubicon Forum has threads for sharing and discussing both puzzle-style levels and abstract design challenges. How to Play When playing the basic levels, or a level designed by another user, you'll be presented with a partially built machine (including at least one target), and must build further components in order to move crates to their correct destinations.

Tutorial - Aroma. Before Starting What is Native Client? Already know? Skip to Enable Native Client Everywhere. Idris - 7. Cool things you can do in Julia. Maude Manual and Examples. Ceylon: Quick introduction. It's impossible to get to the essence of a programming language by looking at a list of its features. What really makes the language is how all the little bits work together. And that's impossible to appreciate without actually writing code. In this section we're going to try to quickly show you enough of Ceylon to get you interested enough to actually try it out. Ragel State Machine Compiler. Ragel compiles executable finite state machines from regular languages.

Ragel targets C, C++, Obj-C, C#, D, Java, Go and Ruby. The Irken Language. Design mistakes in Swift language’s array. More Interpreted Languages: Perl, Tcl, Lua, Groovy - Hyperpolyglot. Dynasm - DynASM with Lua mode. Source | demo. Vector, the Journal of the British APL Association.

Rust

Hacking Thought Blog: My Opinionated Guide To Go (golang) Cobra (programming language) Avail - Introduction. Click — click. Why Not Python - the GIL hinders concurrency. Python vs Julia - an example from machine learning — Andrew Tulloch. 30 Python Language Features and Tricks You May Not Know About. Clojure to die for. Oakes/play-clj. Jeeves Programming Language. Elixir. Programming Language Analysis. Julia introspects. Linear Regression 3 Ways in Julia « boss-level.com. Crystal/Vagrantfile at master · manastech/crystal. MarkusQ/crystal. Purelang / pure-lang. Starting to Demo the Wolfram Language. F*dging up a Racket. Lisp: Common Lisp, Racket, Clojure, Emacs Lisp - Hyperpolyglot.

Home · frenchy64/Logic-Starter Wiki. Documents. PHP: a fractal of bad design - fuzzy notepad. 3 new programming languages to watch. 19 Performance. 1. Kaleidoscope: Tutorial Introduction and the Lexer.

Ruby

Guide - IokeWiki. Src/ikc/main/Ioke.Math/MathContext.cs at master · olabini/ioke. Io. Frink Applet. Faq [NekoVM] Faq [NekoVM] A pamphlet about Potion. Erlang/Elixir Syntax: A Crash Course - Elixir. The Continuation Monad in Clojure. Purelang / pure-lang / source / pure / runtime.h. Big programming, small programming - IFHO. Evincarofautumn/kitten. Move. From Objects to Capabilities. Joule: The Great Synthesis.

References for "The Future of Programming" On the Cleverness of Compilers. Axch/dysvunctional-language. Dysvunctional-language/dvl/examples/celestial at master · axch/dysvunctional-language. Cleverness of Compilers 2: How. Eudoxia0/Hylas-Lisp. J Source. 07/01/2013 - 08/01/2013. Bandicoot - having fun with structured data. Nimrod: A New Approach to Metaprogramming. Maybe Monads Might Not Matter. Language Syntax—Wolfram Language Documentation. Purescript/purescript. Intro to (images in) Go. Ceylon: Quick introduction. Pyret.