And yes, you shouldn't sign into something you know nothing about - no one is asking you too :)
826 karma · joined March 26, 2012
And yes, you shouldn't sign into something you know nothing about - no one is asking you too :)
Not sure about the second part, but `workspace()` was added in 0.3 (https://github.com/JuliaLang/julia/blob/release-0.3/NEWS.md, https://github.com/JuliaLang/julia/issues/1195)
* Very efficient interaction with C and Fortran libraries is a core Julia feature, with the ability to pass arrays and structs directly between C and Julia.
Calling C: http://docs.julialang.org/en/latest/manual/calling-c-and-for...
* Python libraries can be used through PyCall.jl, which is used most famously to call matplotlib (PyPlot.jl) but also other libraries like pandas (Pandas.jl).
PyCall.jl: https://github.com/stevengj/PyCall.jl
PyPlot.jl: https://github.com/stevengj/PyPlot.jl
Pandas.jl: https://github.com/malmaud/Pandas.jl
* Java libraries can be used through JavaCall.jl, which is used in Taro.jl to call Apache Tika and Apache POI
JavaCall.jl: https://github.com/aviks/JavaCall.jl
Taro.jl: https://github.com/aviks/Taro.jl
* R libraries can be called through Rif.jl
Julia 0.3 is a solid release and many Julia users have been using the master Github version for the past few months for production use, academic work, and just messing around quite happily. There are relatively few breaking changes from 0.2 to 0.3, with much better package support - so upgrade as soon as you can.
Julia 0.4 is likely to be a more "unstable" release in the tick-tock style that Linux used to have. Already been some great new things merged in, many more to come. I'd recommend not using the master branch of Julia at this time, and instead stay on release-0.3 if you like to build from source.
- a large percentage of those health-care workers were infected before full protection was widespread
- they have many chances for infection and mistakes happen
- healthcare workers in regions where Ebola was not known to have reached yet did not take necessary precautions.
And yes it is, thanks!
My perspective on Julia is that it has 3 ingredients:
1. A principled design that derives from the experiences of past programming language and particularly the creator's experiences with Lisps. This is where a lot of the "magic" comes from: multiple dispatch, the type system, metaprogramming, etc. The article covers this aspect.
2. A need to be accessible to those transitioning from other languages, like MATLAB and Python. MATLAB, for example, has guided function naming (although Numpy also has similar names for similar reasons). The author mentions the lack of distinction between creating a variable and changing its binding: I'd suggest this is an example of something affected by this design point.
3. A need to be fast. The author brings up the Int vs BigInt distinction. Python, for example, allows Ints to get as big as you want but at a cost. Adding to Ints is not simply an add instruction, you must do a lot more work. Julia, falling on the side of performance, elects to distinguish between arbitrary BigInts and machine Int.
The way these systems are made, and as the article mentions, is that the obvious rules are added, and solutions evaluated. Experience humans will then usually discover something about the solution that is impossible/impractical, but was not included in the provided rules. The new rules/constraints, and the process repeats until humans are comfortable with the feasibility of the solution/schedule.
- Crew scheduling for airlines (e.g. how to satisfy union rules/minimize time-on-ground/get people back home)
- Container flow at ports
- Railway yard scheduling (e.g. allocating cars to engines)
For another example of this particular kind of work (allocating maintenance staff to projects), see a colleague's paper on work for a large gas/electric utility: http://stuff.mit.edu/people/uichanco/scheduling.html
Calling this AI is really a stretch, although the definition of AI is fairly loose I suppose. All the "smarts" are entered by humans in the form of constraints (rules, in this article), the computer's role is essentially just very efficiently searching a combinatorial search space for the best solution. Integer linear programming is a common approach for getting optimal solutions, but can require deep expertise to make fast enough. It seems in this case they have settled for heuristic solutions from a genetic algorithm - perfectly reasonable approach.
The real story for any system like this is actually getting humans to buy into it, see e.g. the many articles about the UPS ORION system for more coverage on this. The last paragraph hints at this but doesn't talk about how they got buy-in, which is something that would be really interesting.
You can definitely express any Brainfuck program as a integer program, and you can add constraints that will constrain what the program does/must do, but it isn't clear to me how to add useful constraints/objective that are still linear. It'd be an interesting exercise though, and something I'll be thinking about.
Integer optimization does have some practical uses related to programming though - its use has been explored in compilers. E.g. http://www.sciencedirect.com/science/article/pii/S0898122197...