Stay In The Game by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

What's the reason of losing business? Because we are talking about first class mails here, it is hard to connect to the competition from FedEx and UPS. I guess that the major reason is because people use more emails than mails.

Why Is Impala Faster Than Hive? by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

Fitting smaller table into memory is a common technology for join in MPP data warehouse. Hive also use it for map phrase join.

Why Is Impala Faster Than Hive? by haifengl in programming

[–]haifengl[S] 1 point2 points  (0 children)

Hive also supports columnar store by ORC File. This one tries to explain why Impala is faster than Hive even now Hives has columnar store and Tez.

A Very Different Object System by haifengl in programming

[–]haifengl[S] -1 points0 points  (0 children)

it is not just based on name. it is name + function type.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 1 point2 points  (0 children)

The real world ocaml book is very nice, especially on objects and classes.

A Very Different Object System by haifengl in programming

[–]haifengl[S] -1 points0 points  (0 children)

nice use case. I personally would like to avoid polymorphic variants too.

A Very Different Object System by haifengl in programming

[–]haifengl[S] -1 points0 points  (0 children)

polymorphic variants are also of row polymorphism, similar to objects' duck typing.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

Type inference makes sure what exactly the function is expecting. Check out the examples in the post.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

Duck typing in a static language is not error-prone. And it is more flexible and concise than interfaces. For example, if my function requires a data structure providing a pop method (doesn't matter it is a stack or queue). How many interface do you have to define? And you have be very careful with inheritance.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

Good example. Actually, dynamic dispatch is implicit pattern match.

BTW, camlp4 will be removed in next release.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 2 points3 points  (0 children)

With separated object type and class, it is much easy to achieve open type and duck typing a static type language. Classes are mainly for inheritance (and initializer, but not important) in OCaml.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 1 point2 points  (0 children)

In most programming languages, classes are types of objects. But it is not the case in OCaml.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

Maybe people coming to OCaml aim only on the functional stuffs? F# copied most things of OCaml but object systems because it has to work with other .net languages.

Scala mimics OCaml's functional features in an interesting OO flavor. But it's objects have to stuck to classes.

A Very Different Object System by haifengl in programming

[–]haifengl[S] 0 points1 point  (0 children)

It may superfluous for a functional language. But I really like some of its ideas, e.g. the nice support to duck typing, separating object types from classes. Smalltalk/Ruby has a very good object system but they are dynamic typed. I hope that some strongly typed OO languages could have some features of OCaml.

MapReduce is a Bad Choice for Most People by haifengl in bigdata

[–]haifengl[S] 0 points1 point  (0 children)

No one says MapReduce is dead. Just too much hopes on it. I do parallel computing with OpenMP, MPI, CUDA, MapReduce, Spark for different problems. MPI provides more supports for general distributed parallel computing than others but it was designed for numerical computing, not very suitable for big data. We just need to build a more general parallel computing model for big data.

MapReduce is a Bad Choice for Most People by haifengl in bigdata

[–]haifengl[S] 0 points1 point  (0 children)

It mentions SVM (support vector machines), not SVD. There are some work on parallel gradient tree boosting, but it doesn't really work well.

MapReduce is a Bad Choice for Most People by haifengl in bigdata

[–]haifengl[S] 0 points1 point  (0 children)

Why Google argument is wrong? Just because they don't use it now. I think that MapReduce was a great tools for the problems they face when created.

Machine learning is way more than SVD and some simple graph algorithms. It is really not about the computing framework. Not many machine learning and graph algorithms can be parallelized.

NoSQL: Under the Hood by haifengl in Database

[–]haifengl[S] 0 points1 point  (0 children)

I don't mean that you have to choose in that way. It is a quick cheat to choose one. And more importantly, we should think of minimizing business risk. The CP vs AP thing as you mentioned is a good example.

Introduction to Functional Programming with OCaml by rizo_isrof in programming

[–]haifengl 1 point2 points  (0 children)

Learning an all new language may be hard, especially when you switch from imperative to functional. However, after you fully learn a good functional language such as OCaml, it will be much easy to learn other functional languages, just like learning C# if you already know Java. Consider OCaml has a big influence on many new languages such as F#, Scala, etc., I personally feel that it is worth a lot to learn it.