HackerTrans
TopNewTrendsCommentsPastAskShowJobs

lukashrb

no profile record

Submissions

Programming languages ranked by expressiveness (2013)

redmonk.com
2 points·by lukashrb·4 tahun yang lalu·0 comments

F# support for type classes or implicits

github.com
3 points·by lukashrb·5 tahun yang lalu·0 comments

A History of Clojure [video]

pldi21.org
99 points·by lukashrb·5 tahun yang lalu·10 comments

comments

lukashrb
·3 bulan yang lalu·discuss
I thought the same for a long time and it really discouraged me. My natural pitch recognition is pretty bad. What helped was starting with very simple melodies and songs, so I could get familiar with the most common movements. That made it easier to figure out progressions, because I learned how to narrow down the options. I’m still not great at it, but I keep improving. That’s why I think it’s trainable.
lukashrb
·4 bulan yang lalu·discuss
Every time I write another DTO → domain → DB mapping layer in Kotlin/TypeScript, I think about Clojure. I’m pretty grateful I learned it. It really changed how I think about software. Still, it’s a trade: less ceremony, more responsibility.
lukashrb
·3 tahun yang lalu·discuss
Picking up Clojure was the best learning experience I've had in my professional life. Rich is inspiring; I wish him all the best.
lukashrb
·3 tahun yang lalu·discuss
> but it gets in the way when you're rapidly prototyping and exploring.

If you prototype a new features for an existing system, a test let you execute only the code you actually need. This will shorten your feedback loop and allow you to iterate faster. Refactoring a test is fine. Writing a BS test just to explore a solution is fine. In my experience following a test lead practice will help you build a simpler system which will be easier to maintain.
lukashrb
·4 tahun yang lalu·discuss
There is this book "Drive The Surprising Truth About What Motivates Us" which makes the same point, they also cite some studies about this.
lukashrb
·4 tahun yang lalu·discuss
As I understand, implicit joins are another selling point
lukashrb
·4 tahun yang lalu·discuss
I'm really greatful for clojure to exist. It exposed me to a lot of concepts and gave me a new perspective to think about problems, which in turn helped me to grow tremendously as a developer.

The emphasis to work directly with the data is quite unique to clojure (as I'm aware of, please proof me wrong on this) which allows me to just dive in and think about the problem I want to solve instead of fighting my language or framework. The interactivity of the environment paired with immutability results in an instant feedback loop which let me get into mental flow really fast, which is a joy.
lukashrb
·4 tahun yang lalu·discuss
Could you specify, what you mean by "refactor large codebases"?

> compiler telling you if the pieces still fit together?

You still write tests in scala do you?
lukashrb
·4 tahun yang lalu·discuss
> and because it is statically typed with a decent type system, you can refactor quite safely in general.

I wish that would be true. Would make my current job a lot easier.
lukashrb
·4 tahun yang lalu·discuss
Are there any examples for 2 and 3 openly accessible? While I grasped the basic idea I lack the imagination how it would look in a real world system.
lukashrb
·4 tahun yang lalu·discuss
If I recall correctly: cisco threat grid is using core.logic
lukashrb
·4 tahun yang lalu·discuss
> I get paid to deal with requirements that change every bloody week because we have quick customer feedback

In my experience this is something where clojure is exceptionally good at.
lukashrb
·5 tahun yang lalu·discuss
Thank you.
lukashrb
·5 tahun yang lalu·discuss
If I understand you correctly, this i a general problem of functional data structures?

> Clojure will always be slow, because it's not cache friendly.

You always have the option to use the java data structures, for the cases this kind of optimization is needed.
lukashrb
·5 tahun yang lalu·discuss
> Peter Norvig here. I came to Python not because I thought it was a better/acceptable/pragmatic Lisp, but because it was better pseudocode.[0]

[0] https://news.ycombinator.com/item?id=1803815
lukashrb
·5 tahun yang lalu·discuss
The link is broken. Nevertheless I don't now much about the benchmarks but SBCL seems impressively fast.
lukashrb
·5 tahun yang lalu·discuss
You're absolutely right. I guess I mentioned pattern matching in particular because of the cited sentence from OP "I'm still waiting for pattern matching + algebraic data types".

> The same is true for the rest of the things you've mentioned: none are specific to static typing!

Sure, I could be wrong here. I frequently am. But could you point out why do you think that?
lukashrb
·5 tahun yang lalu·discuss
Your are right! Thank you for correcting me.
lukashrb
·5 tahun yang lalu·discuss
For what its worth: People don't use dynamic language because they don't know better or never used a static language. To better understand what dynamic languages bring to the table, here are some disadvantages of static types to consider:

Static types are awesome for local reasoning, but they are not that helpful in the context of the larger system (this already starts at the database, see idempotency mismatch).

Code with static types is sometimes larger and more complex than the problem its trying to solve

They tightly couple data to a type system, which (can) introduce incidental complexity >(I'm still waiting for pattern matching + algebraic data types) This is a good example, if you pattern match to a specific structure (e.g. position of fields in your algebraic data type), you tightly coupled your program to this particular structure. If the structure change, you may have to change all the code which pattern matches this structure.
lukashrb
·5 tahun yang lalu·discuss
I would really appreciate if someone takes the time to enlighten me how monads solve the problem.