wsgeek
-- JavaScript/Typescript for in-browser or even some server-side stuff (e.g., NodeJS)
-- Python seems to be dominant for non-browser code that doesn't need to be fast (or which needs to call Python libraries)
-- C/C++/Rust/C# in the performance space
-- And then the workhorse Bash/ZSH etc for command-line script-fu
I am sincerely asking, what's the nice good fit for a Lisp these days? I know Emacs uses it as its internal language -- fair enough. But other than that.
Thanks and I did not mean to hurt anyone's feelings, I just really am curious.
Sample factorial function:
(define fac (lambda (n) (if (= n 0) 1 (* n (fac (- n 1)))))) ; <<--- look at those parens!
And with Clojure, you don't have proper tail recursion, so you'll have to add some Clojure-only thing in there to prevent the above code from blowing up for large numbers.
There's really no getting around it -- Lisp, for many people, is just hard to parse. Consider:
def fac(n): n < 2 ? n : n * fac(n - 1)
Yay! No noise. But I agree, there are some cool things about Clojure.
I read through the Crystal language docs (meaning just the syntax etc) and as a seasoned C++ and Python developer who is _constantly_ looking for something with better performance (than Python) yet much cleaner (than C++), I think Crystal has a lot going for it so far.
Any "great" language should be able to take a thought in a developer's head and easily allow 1) the concise expression of that thought, and 2) efficient evaluation of that thought. I mean, those things we probably would all agree on.
It saddens me to say this, but C++ is falling over as a result of it's own weight. It's become a language for experts. Perhaps more than any popular language, it can take a simple idea in a developer's head and turn it into pages of code. It's actually quite embarrassing. I won't go into that further; judge for yourself (and sorry if that comment offends anyone -- I love C++ and use it every day). But you just can't beat the speed... Well-crafted C++ _should_ exceed the speed of even C (Why? Because templates...). As an aside, it's disingenuous to put Java in the same speed category as C/C++... The "fast" Java programs out there are basically C with Java wrappers (ducks thrown tomatoes). And just like C++, Java is very noisy (but for different reasons).
Python as we all know sort of takes the opposite approach, with dynamic typing a design-as-you-go mentality. And boy what a success it has been, with a flourishing package ecosystem. There's lots of good things to say about Python, but it's f*cking slow as hell (Cython is a hack, Numba shows promise, but PyPy isn't much faster... I was excited about Pyston but don't know where that went). It's not the fault of Python that it's slow -- it's the price of such a wonderfully dynamic language.
So enter things like Crystal. And trust me -- it's definitely early days with this language. But I like the fact that the designers really seem to care about the things that (to most of us I think) matter.... Taking an idea in our brain and putting it (simply) down in code, and then having that code run quickly. Yay!
In this day and age where we are swamped with hype from all of these new languages, let's give praise where it's warranted -- to the people are out there that are trying to refine decades worth of thought and finally "get it right".
My hat is off to those people out there that are forging ahead with these types of projects. Don't mind the criticism -- keep it up and great job.
(Sorry about the formatting.... I tried <code>). Anyway, TL/DR it cannot find boost.
$ ./node_modules/.bin/lerna run start --stream lerna info version 2.8.0 @jpmorganchase/perspective: > @jpmorganchase/[email protected] start /home/dj/usr/src/perspective-clone/packages/perspective @jpmorganchase/perspective: > npm run compile && (npm run perspective & npm run compile_test & npm run compile_node & wait) @jpmorganchase/perspective: > @jpmorganchase/[email protected] compile /home/dj/usr/src/perspective-clone/packages/perspective @jpmorganchase/perspective: > mkdir -p build build/wasm_async build/wasm_sync build/asmjs && (cd build/; emcmake cmake ../; emmake make -j8; cd ..) @jpmorganchase/perspective: -- Configuring done @jpmorganchase/perspective: -- Generating done @jpmorganchase/perspective: -- Build files have been written to: /home/dj/usr/src/perspective-clone/packages/perspective/build @jpmorganchase/perspective: Scanning dependencies of target psp @jpmorganchase/perspective: [ 1%] Building CXX object CMakeFiles/psp.dir/src/cpp/base_impl_win.cpp.o @jpmorganchase/perspective: [ 2%] Building CXX object CMakeFiles/psp.dir/src/cpp/arg_sort.cpp.o @jpmorganchase/perspective: [ 4%] Building CXX object CMakeFiles/psp.dir/src/cpp/calc_agg_dtype.cpp.o @jpmorganchase/perspective: [ 5%] Building CXX object CMakeFiles/psp.dir/src/cpp/aggspec.cpp.o @jpmorganchase/perspective: [ 8%] Building CXX object CMakeFiles/psp.dir/src/cpp/aggregate.cpp.o @jpmorganchase/perspective: [ 8%] Building CXX object CMakeFiles/psp.dir/src/cpp/base.cpp.o @jpmorganchase/perspective: [ 9%] Building CXX object CMakeFiles/psp.dir/src/cpp/base_impl_linux.cpp.o @jpmorganchase/perspective: [ 10%] Building CXX object CMakeFiles/psp.dir/src/cpp/build_filter.cpp.o @jpmorganchase/perspective: [ 12%] Building CXX object CMakeFiles/psp.dir/src/cpp/column.cpp.o @jpmorganchase/perspective: In file included from /home/dj/usr/src/perspective-clone/packages/perspective/src/cpp/calc_agg_dtype.cpp:11: @jpmorganchase/perspective: In file included from /home/dj/usr/src/perspective-clone/packages/perspective/src/include/perspective/calc_agg_dtype.h:12: @jpmorganchase/perspective: In file included from /home/dj/usr/src/perspective-clone/packages/perspective/src/include/perspective/schema.h:13: @jpmorganchase/perspective: /home/dj/usr/src/perspective-clone/packages/perspective/src/include/perspective/base.h:29:10: fatal error: 'boost/unordered_map.hpp' file not found @jpmorganchase/perspective: #include <boost/unordered_map.hpp>\n ^~~~~~~~~~~~~~~~~~~~~~~~~ </code>
...and the employees "wanted" this? I doubt it.
Seriously, did I misinterpret this? Not trying to be a troll.
Be very careful when an OS vendor makes a move like this.
Steve is not being overly controlling... You are all looking at his "blocking" of Flash as a closed-minded policy. Consider this: Do Active-X controls run on the iPhone (or Android)? No -- they never have, and this is for technical AND business reasons. It would be fairly easy to support them -- just have WINE as part of OS X. The reason Apple doesn't do this is because they would be letting the fox into the henhouse and adding unnecessary bloat to a mobile device. Everyone seems to get this, which is why you don't hear complaints from all of the Java and Silverlight people about not being able to code for iPhones.
To another point: Ask yourselves -- What is Adobe's business model? They make NO money on the Flash plugin. It's free. They make their money on tools. If I'm the Adobe CEO, I would strive to have every app in the world written in Flash. Now who is close-minded? And by the way, Adobe could solve this VERY easily by making their tools output in HTML5, etc. Why don't they want to do this? Because they feel that HTML5 might be slow to adopt features that they already have. Oh wait -- now the shoe is on the other foot! Adobe realizes that the innovation of their platform would be stifled by any lack of features in HTML5. So why don't they have their tools output Objective-C code which could then be compiled by Apple's tools? My understanding of section 3.3.1 is that this is allowed.
Developer tools are the gateway to a platform. Microsoft knows this -- which is why they have some of the most mature tools around. When Microsoft adds a feature to their operating system, why do you as developers feel comfortable waiting for Flash, Java, etc to create an interface to that new feature? If I were a software company, I would embrace a platform and strive to be the best on it -- use every new feature to its fullest extent. Guys, this is what you get paid to do -- innovate, using whatever tools are necessary! It's about the end user experience. This is what makes an app sell.
So what Steve is gambling on, and it's a bold yet well-considered move, is that the iPhone/iPad/iPod platform (hardware + OS) will always be slightly ahead of competitors. And the developers who agree will retrain themselves to take advantage of the platform. Development tool vendors will do the same. If Apple were to release a killer hardware feature on the iPhone (which is their business model to do so!), how long would it take for Flash to incorporate it into not only their player but also their development tools? Would they wait until Android implemented it too before doing the release? This harms Apple, it harms developers, and it harms consumers.
Flash has a cross-platform, least-common-denominator approach to computing. This is a thing of the past!
You might be saying to yourselves that Microsoft never blocked anything -- Flash, Java, RealPlayer, etc. Well, they have a different business model. They want people to consider Windows as the defacto OS platform, and they want to support an ecosystem of ISVs that fill in all the gaps. It's a very well-conceived plan, and it only works because they have a near monopoly on the desktop. If they did not, then their business model would not work. Imagine if you will a world where Linux itself was not free AND they charged for the development tools AND those were the only tools you can use to develop for the platform (as is DevStudio). As you can see, Linux's lack of market share would make this an untenable business model.
Why do you think they charge money for their development tools? Eclipse, XCode, and dozens of others are free of charge (yes, I know there is a free version of DevStudio but it is missing some key features). They charge money because they CAN. Adobe charges money because they CAN. If Apple were to charge money for XCode, it would kill the platform. Think about this anytime you are bashing Apple for the high perceived cost of their computers relative to humdrum PCs -- you're getting software that was developed by companies that got the tools for free, and this means you will get better software.
Flash developers, you are right to be up in arms over the omission of Flash as part of the iPhone OS. But you're directing your anger at the wrong party. First, I understand that you are loathe to have to learn a new toolset (which you feel is inferior to Flash) to get your apps out there. Years of experience that you have will help to bridge that gap! You are good developers and you will find a way. You should instead be asking yourselves, why are there no 3rd-party Flash development tools that compare to Adobe's?
http://en.wikipedia.org/wiki/Adobe_Flash#Third-party_tools
Why is the .SWF format not entirely open?
http://en.wikipedia.org/wiki/.swf#Licensing
Adobe has great tools that create compelling apps -- there's no denying that.
Microsoft has great tools that create compelling apps -- there's no deny that.
And Apple has great tools too. Closed systems are a thing of the past (remember when Microsoft had "hidden" APIs that their apps used?). By being forced to expose the hidden APIs, it removed the need for cross-platform emulation/library layers. Yes, it's more work for you, but c'mon, you're good developers, the best at what you do. You will find a way.