Showing posts with label programming languages. Show all posts
Showing posts with label programming languages. Show all posts
Monday, June 29, 2015
Technical English Seminar
It's super exciting to be a part of tonight's Technical English Seminar at VTC Academy. This started off as another Tech Tak Tuesday presentation, but thanks to the support of VTC Academy, we've got quite a crowd coming tonight. Here's the slides for the first part:
Tuesday, May 12, 2015
Computerworld: 9 Programming Languages and the Women who created them
Computerworld has a fascinating slideshow of 9 Programming Languages and the Women who created them. They are:
Kathleen Booth, ARC Assembly, 1950

Kateryna Yushchenko Address Language,1955

Grace Hoppe Cobol Co-creator, 1959

Jean Sammet FORMAC,1962 

Cynthia Solomon Logo , 1967 

CLU Creator: Barbara Liskov 1974 

Adele Goldberg Smalltalk co-creator, 1980 v

Sophie Wilson BBC BASIC,1981 

Christine Paulin-Mohring Cog, 1991 

Thursday, March 19, 2015
Introduction to Julia
"Julia is a fresh approach to technical computing." boasts the startup message, flourished with colorful circles hovering above a bubbly ASCII Julia logo. The formatting effort is not wasted, it's an exuberant promise: Julia will make the command line fun again.
Julia was created by four Data Scientists from MIT who began working on it around 2011. The language is beginning to mature at a time when the Data Scientist job title is popping up on resumes as fast as Data Scientist jobs appear. The timing is excellent. R programming, an offshoot of S Programming , is the language of choice for today's mathematical programmer. But it feels clunky, like a car from the last century. While Julia may not unseat R in the world of Data Analysis, plans don't stop there.
Julia is a general purpose programming language. It's creators have noble goals. They want a language that is fast like C, they want it flexible with cool metaprograming capabilities like Ruby, they want parallel and distributed computing like Scala, and true Mathematical equations like MATLAB.
And, as the languages co-creator Karpinski notes in the comments of the referenced post, Writing the language itself in Julia means that when improvements are made to the compiler, both the system and user code gets faster.
Julia's introspection is awesome, particularly if you enjoy looking at native assembler code. Dissecting assembler code comes in handy when optimizing algorithms. Julia programmers have several introspection functions for optimization. Here the code_native method shows the recursive nature of a binary sort algorithm.
apptrain_1@julia:~/workspace $ julia _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_) | Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "help()" to list help topics | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.2.1 (2014-02-11 06:30 UTC) _/ |\__'_|_|_|\__'_| | |__/ | x86_64-linux-gnu julia>
Julia was created by four Data Scientists from MIT who began working on it around 2011. The language is beginning to mature at a time when the Data Scientist job title is popping up on resumes as fast as Data Scientist jobs appear. The timing is excellent. R programming, an offshoot of S Programming , is the language of choice for today's mathematical programmer. But it feels clunky, like a car from the last century. While Julia may not unseat R in the world of Data Analysis, plans don't stop there.
If you want to code along with the examples in this article, jump to Getting Started with Julia and chose one of the three options to start coding.
Julia is a general purpose programming language. It's creators have noble goals. They want a language that is fast like C, they want it flexible with cool metaprograming capabilities like Ruby, they want parallel and distributed computing like Scala, and true Mathematical equations like MATLAB.
Why program in Julia?
1) Julia is Fast
Julia already boasts faster matrix multiplication and sorting than Go and Java. It uses the LLVM compiler, which languages like GO use for fast compilation. Julia uses just in time (JIT) compilation to machine code , and often achieves C like performance numbers.
2) Julia is written in Julia
Contributors need only work with a single language, which makes it easier for Julia users to become core contributors.
"As a policy, we try to never resort to implementing things in C. This keeps us honest – we have to make Julia fast enough to allow us to do that" -Stephan Karpinski
And, as the languages co-creator Karpinski notes in the comments of the referenced post, Writing the language itself in Julia means that when improvements are made to the compiler, both the system and user code gets faster.
3) Julia is Powerful
Like most programming languages, it's implementation is Open Source. Anyone can work on the language or the documentation. And like most modern programming languages, Julia has extensive metaprogramming support. It's creators attribute the Lisp language for their inspiration:
Like Lisp, Julia represents its own code as a data structure of the language itself.
a) Optional Strong Typing
Using strong typing can speed up compiling, but Julia keeps strong typing optional, which frees up programmers who want to write dynamic routines that work on multiple types.
Using strong typing can speed up compiling, but Julia keeps strong typing optional, which frees up programmers who want to write dynamic routines that work on multiple types.
julia> @code_typed(sort(arry)) 1-element Array{Any,1}: :($(Expr(:lambda, {:v}, {{symbol("#s1939"),symbol("#s1924")},{{:v,Array{Float64,1},0},{symbol("#s1939"),Array{Any,1},18},{symbol("#s1924"),Array{Any,1},18}},{}}, :(begin $(Expr(:line, 358, symbol("sort.jl"), symbol(""))) #s1939 = (top(ccall))(:jl_alloc_array_1d,$(Expr(:call1, :(top(apply_type)), :Array, Any, 1))::Type{Array{Any,1}},$(Expr(:call1, :(top(tuple)), :Any, :Int))::(Type{Any},Type{Int64}),Array{Any,1},0,0,0)::Array{Any,1} #s1924 = #s1939::Array{Any,1} return __sort#77__(#s1924::Array{Any,1},v::Array{Float64,1})::Array{Float64,1} end::Array{Float64,1}))))
b) Introspective
Julia's introspection is awesome, particularly if you enjoy looking at native assembler code. Dissecting assembler code comes in handy when optimizing algorithms. Julia programmers have several introspection functions for optimization. Here the code_native method shows the recursive nature of a binary sort algorithm.
julia> code_native(sort,(Array{Int,1},)) .text push RBP mov RBP, RSP push R14 push RBX sub RSP, 48 mov QWORD PTR [RBP - 56], 6 movabs R14, 139889005508848 mov RAX, QWORD PTR [R14] mov QWORD PTR [RBP - 48], RAX lea RAX, QWORD PTR [RBP - 56] mov QWORD PTR [R14], RAX xorps XMM0, XMM0 movups XMMWORD PTR [RBP - 40], XMM0 mov QWORD PTR [RBP - 24], 0 mov RBX, QWORD PTR [RSI] movabs RAX, 139888990457040 mov QWORD PTR [RBP - 32], 28524096 mov EDI, 28524096 xor ESI, ESI call RAX lea RSI, QWORD PTR [RBP - 32] movabs RCX, 139889006084144 mov QWORD PTR [RBP - 40], RAX mov QWORD PTR [RBP - 32], RAX mov QWORD PTR [RBP - 24], RBX mov EDI, 128390064 mov EDX, 2 call RCX mov RCX, QWORD PTR [RBP - 48] mov QWORD PTR [R14], RCX add RSP, 48 pop RBX pop R14 pop RBP ret
c) Multiple Dispatch
Multiple dispatch allows Object Oriented behavior. Each function can have several methods designed to operate on the types of the method parameters. The appropriate method is dispatched at runtime based on the parameter types.
julia> methods(sort) # 4 methods for generic function "sort": sort(r::UnitRange{T<:real at="" bstractarray="" dim::integer="" pre="" r::range="" range.jl:533="" range.jl:536="" sort.jl:358="" sort.jl:368="" sort="" v::abstractarray="">
Thursday, February 12, 2015
JULIA – A FAST DYNAMIC LANGUAGE FOR TECHNICAL COMPUTING by Øredev Conference
Julia is a high-level, high-performance dynamic language for scientific computing. It has been gaining traction as a faster alternative to Matlab, R and NumPy and as a more productive alternative to C, C++ and Fortran. Julia is particularly relevant when both expressiveness and performance are paramount – in areas like machine learning, “big statistics”, linear algebra, bioinformatics, and image analysis.
Tuesday, June 3, 2014
Andy Hunt Video Talk Pragmatic Thinking by Ismael Marin
Video talk at the Universidad Iberoamericana Leon in Mexico at the CESLG 08, in which andy talks about his career and his new book Pragmatic Thinking and Learning, he also gives tips to be a better programmer. http://ift.tt/1mOObX5
Thursday, May 22, 2014
Dave Thomas - RubyConf AU 2013 Closing Keynote by Ruby Australia
Dave Thomas needs no introduction to Ruby programmers. As co-author of "Programming Ruby: The Pragmatic Programmers' Guide" - fondly known as the "Pickaxe", Dave was instrumental in spreading Ruby beyond its birthplace in Japan.
Labels:
Dave Thomas,
programming icons,
programming languages,
ruby
Subscribe to:
Posts (Atom)
Popular Articles
-
Today's Tech Talk Tuesday is virtual, we'll do a live one next week. Learn how to code with R like DataFrames in Julia. And see...
-
At April's Tech Talk Tuesday , we previewed six Modern Customer Relationship Management (CRM) Systems . There are hundreds of CRM ...
-
Top 10 Cloud Apps for your Business introduced apps often used from the cloud. There are several vendors to chose from when implementin...
-
Two great things about Ruby are it's brevity and it's dynamic nature. A great way to introduce Ruby to a project written in another...