Out in the Open: Man Creates One Programming Language to Rule Them All | WIRED


This Julia language looks interesting…

Posted from WordPress for Android


  1. Tomi Engdahl says:

    Julia is a high-level dynamic programming language designed to address the requirements of high-performance numerical and scientific computing while also being effective for general purpose programming,[10][11][12][13] even server/web use[14] or as a specification language.[15][16] Distinctive aspects of Julia’s design include having a type system with parametric types in a fully dynamic programming language, and adopting multiple dispatch as its core programming paradigm. It allows for parallel and distributed computing, and direct calling of C and Fortran libraries without glue code. Julia is garbage collected,[17] uses eager evaluation, and includes efficient libraries for floating point, linear algebra, random number generation, fast Fourier transforms, and regular expression matching.

    Source: http://en.wikipedia.org/wiki/Julia_%28programming_language%29

  2. Tomi Engdahl says:

    Why I’m Betting on Julia

    The problem with most programming languages is they’re designed by language geeks, who tend to worry about things that I don’t much care for. Safety, type systems, homoiconicity, and so forth. I’m sure these things are great, but when I’m messing around with a new project for fun, my two concerns are 1) making it work and 2) making it fast. For me, code is like a car. It’s a means to an end. The “expressiveness” of a piece of code is about as important to me as the “expressiveness” of a catalytic converter.

    This approach to programming is often (derisively) called cowboy coding.

    Normally I use one language to make something work, and a second language to make it fast, and a third language to make it scream. This pattern is fairly common. For many programmers, the prototyping language is often Python, Ruby, or R. Once the code works, you rewrite the slow parts in C or C++. If you are truly insane, you then rewrite the inner C loops using assembler, CUDA, or OpenCL.

    Unfortunately, there’s a big wall in between the prototyping language and C, and another big wall between C and assembler. Besides having to learn three different languages to get the job done, you have to mentally switch between the layers of abstraction.

    I read about Julia a while back, and thought it sounded cool, but not like something I urgently needed. Julia is a dynamic language with great performance.

    Only later did I realize what makes Julia different from all the others. Julia breaks down the second wall — the wall between your high-level code and native assembly. Not only can you write code with the performance of C in Julia, you can take a peek behind the curtain of any function into its LLVM Intermediate Representation as well as its generated assembly code — all within the REPL. Check it out.

  3. Tomi Engdahl says:


    A Summary of Features

    Multiple dispatch: providing ability to define function behavior across many combinations of argument types
    Dynamic type system: types for documentation, optimization, and dispatch
    Good performance, approaching that of statically-compiled languages like C
    Built-in package manager
    Lisp-like macros and other metaprogramming facilities
    Call Python functions: use the PyCall package
    Call C functions directly: no wrappers or special APIs
    Powerful shell-like capabilities for managing other processes
    Designed for parallelism and distributed computation
    Coroutines: lightweight “green” threading
    User-defined types are as fast and compact as built-ins
    Automatic generation of efficient, specialized code for different argument types
    Elegant and extensible conversions and promotions for numeric and other types
    Efficient support for Unicode, including but not limited to UTF-8
    MIT licensed: free and open source

    Julia’s LLVM-based just-in-time (JIT) compiler combined with the language’s design allow it to approach and often match the performance of C. To get a sense of relative performance of Julia compared to other languages that can or could be used for numerical and scientific computing, we’ve written a small set of micro-benchmarks in a variety of languages: C, Fortran, Julia, Python, Matlab/Octave, R, JavaScript, Go, and Mathematica.


Leave a Comment

Your email address will not be published. Required fields are marked *