HN user

cptwunderlich

95 karma
Posts2
Comments39
View on HN
Why Haskell? 2 years ago

The Haskell Language Server (LSP) always needs help: https://github.com/haskell/haskell-language-server/issues?q=...

As for GHC compile times... hard to say. The compiler does do a lot of things. Type checking and inference of a complex type system, lots of optimizations etc. I don't think it's just some bug/inefficient implementation, bc. resources have been poured into optimizations and still are. But there are certainly ways to improve speed. For single issues, check the bug-tracker: https://gitlab.haskell.org/ghc/ghc/-/issues/?label_name%5B%5...

For the big picture, maybe ask in the discourse[1] or the mailing list. If you want to contribute to the compiler, I can recommend that you ask for a gitlab account via the mailing list and introduce youself and your interests. Start by picking easy tickets - GHC is a huge codebase, it takes a while to get familiar.

Other than that, I'd say some of the tooling could use some IDE integration (e.g., VS Code plugins).

[1]...https://discourse.haskell.org/

Gosh, I really wish GCC had more/better documentation. Especially big picture stuff. E.g., I would like to know what register allocation algorithms it uses (and how certain details are handled), but looking at that code I noped out...

This is very fundamental not only in maths but in theoretical computer science in general. Even to prove how "hard" a problem is. E.g. look into (Turing/many-one) reductions [1]

Many problems can be reduced to SAT and then you can employ an off-the-shelf SAT/SMT solver to solve it for you. Etc etc.

But in general, being able to reduce problem A to problem B implies that A is not harder than B. I.e., to show that a problem P is undecidable, you can reduce the Halting problem to P.

TSP is NP-hard and can be reduced to SAT, then solved with a SAT solver. But something like determining whether a player has a winning strategy in unrestricted chess (with an nxn board, for arbitrary n) is in EXPTIME and can't be reduced to an "easier" problem.

Edit: Someone ITT also mentioned ILP (integer linear programming). Also a good example. E.g., many optimization programs can be mapped to ILP.

[1] https://en.wikipedia.org/wiki/Turing_reduction

Uff, I started working part-time pretty soon after starting my bachelors and have studied and worked part-time for many years. It's terrible. Worst of both worlds. Now I quit my job and trying to finish my master's thesis. What surprises me is, that he took so few classes. This seems to be different in every country (note: am in Europe). When I did a semester abroad, I got way more credits per class. Here all the classes are either 3 or 6 credits and you need 120 (30 for thesis).

Anyway, I do like the academic side of things and so many topics that I would have never gotten into (compilers, formal methods...), so I wouldn't want to miss it. Just wish I had finished sooner...

That's not really true. There was a huge outcry against the removal of (/=). There are still lots of warts in Prelude and base (head being partial, foldl is in prelude but not foldl'). So yeah, language evolution is still a hard problem

FYI there was a proposal for a "Haskell 2021 Language" Extensions (similar to Haskell 98 and 2010), which was approved. This enables a bunch of extensions (and I guess will become default): https://github.com/ghc-proposals/ghc-proposals/blob/master/p...

That being said, while there are alternative preludes, I'm not sure how or when (or ever) the current prelude will be changed or replaced.

In terms of language evolution, the community seems to focus on further extensions of the Type System (linear types, quicklook impredicativity, dependent types), where I think there is a bigger need in better tooling. Of course, there too, lots of things are happening, like haskell-language-server, ghc-debug etc. etc. But still lots of work to do. Would be great if more people worked on modern tooling and improving GHC. And even better if more companies would fund that =)

What, since when is GCC implemented in C++? I don't see any of that: https://github.com/gcc-mirror/gcc

Maybe in libstdc++, but what else would you use there.

I wanted to know what register allocation algorithms GCC implements, but I can't even find it. It's all files with cryptic names and hundreds in one directory. You can find _even less_ documentation, talks and blog posts about GCC internals :(

That's different. Shift work - also around the clock - is allowed, as long as the individual worker's rest times are respected. The point being that there are three shifts of each 8 hours, not one worker works 24 hours.

Italian Ruby 6 years ago

There have been some attempts for localized programming languages. In fact, e.g., MS Excel Macros are localized (e.g., "SUMME()" in german instead of "SUM()"). There is even a Wikipedia page: https://en.wikipedia.org/wiki/Non-English-based_programming_...

I'm a bit conflicted. On the one hand, I am all for language diversity and empowering local languages. It may also help novices and very young learners. On the other hand you are already learning an unfamiliar formalism and it hinders interoperability, sharing and collaborating. Hm..

Isn't the biggest issue that alternative Python implementations (pyston, pypy) have to implement all the quirks of CPython and compatibility with C-Extensions? Since there is no written standard and libraries rely on CPython behavior. Making things like Numpy etc. work, that heavily use C, seems really hard for jitted implementations.

I've tried jitsi for a group chat with friends, but the CPU usage went to the roof and we had other problems too. Apparently that's an issue with Firefox, as I've learned here.

Anyway, we were using talky.io, which is also a WebRTC based solution and it worked really well. No registration, good Audio/Video quality, screen sharing. No background blurring though, if that's what you need.

Since the author, russjones, seems to be here, I'd like to ask a question regarding writing the actual BPF programs. I've been writing a term paper about BPF verification, the in-kernel verifier and research like PREVAIL [1], so I'm curious.

Is writing valid BPF programs really that "hard"? E.g., does one often have to rewrite programs bc. the verifier wouldn't accept them? Do you see a need to extend BPF with more capabilities? (bounded loops have been added in Kernel 5.3, but maybe something else)

Thank you.

[1] https://vbpf.github.io/

I also wanted to congratualte you for your effors. I'm a daily and long time user of Duolingo and thought of libre alternatives for a while.

I'd agree with some sentiments in this comment section, that you might want to find a niche, as competing with Duolingo or Babbel would be difficult. Duolingo doesn't too well with "smaller" languages and different scripts.

Are you using a TTS engine for the voice (I assume)? I was looking for TTS for a smaller language I'm studying, but I couldn't find anything. I hope that something comes out of the Mozilla's Common Voice project.

I don't think there is anything comparable OSS wise. Creating such an alternative wouldn't only be very difficutl tech-wise, but someone would also have to create the content.

Anyway, I've been using Duolingo since ca. 2014 and it didn't shutdown... Plus, it's free - what do you have to lose? Your progress on some language learning app? You won't lose the knowledge gained.

You can search for a language on Netflix though, e.g., search for "Italian" and it will show several tags next to "Explore titles related to", like "Italian-languae Movies & TV".