197 reputation
16
bio website
location Germany
age 35
visits member for 3 years, 8 months
seen Oct 30 '13 at 12:42

Haskell programmer. Diploma in Informatics (=Master in CS).


Jun
7
comment Why is OOP difficult?
@acidzombie42: functional isn't weird at all. you don't have to write a list of commands to change the contents of variables that represent a location in RAM. variables represent values, you do not change values; 42 stays 42, x stays x – whatever x is. you write functions that map from their parameters to results. values are: numbers, lists of values, functions from values to values, programs that produce side effects and a resulting value on execution, and more. that way, the result of the main function will be calculated by the compiler, that is the program that can be executed.
Apr
4
comment How can I really “wow” an employer at an interview?
Your voice and probably shy behavior under some types of stress, in interview situations, in exams, and most likely in talks with unaccustomed important persons might not only depend on psychological factors: In my case, such a behavior is caused eating things with traces of milk. You might want to try the GfCf-diet (no traces of: Gluten, milk, soy for at least 4 days; grapefruit(?), kaki(?) and drupe-seeds like pepper/coffee/pistachio for at least 2 days), which helped me a lot. But beware: Iff the diet works, then you might experience new types of slips of the tongue until your brain adopts.
Apr
4
comment How can I really “wow” an employer at an interview?
This might not help at the moment, but in the future: If you have good experience in functional languages (especially Haskell), then you will be wanted so much, even by companies searching for programmers of imperative (object oriented) languages, that you might earn salaries above $100K/year (pre-tax). In that case, the interview-chit-chat does not matter anymore – but they will test your programming skills.
Mar
17
comment How did we get saddled with the (hierarchical) filesystem as the basic data structure?
I have a CS degree. But I don't know into which folders any Windows does put what files into. Especially Desktop, StartMenu, QuickLaunch, and all the other user/system specific default folders. (That M$-Help system does not help in explaining to me how to press a button.) I need to install CygWin to be able to search for my own files, because newer M$ search features do not find simple existing files anymore like on win2k. Disabling misfeatures like hide-system-files, hide-file-extensions don't solve most problems anymore. I gave up Windows, when I was forced to work on the (brand new) winXP.
Dec
25
comment Is anything in programming truly evil?
@acidzombie24: CPS is not about creating another stack at all: In functional languages the program is a graph where a function is a node/object that has an eval-method and some references to other nodes. The execution is a graph-reduction, where the sequence of the methods to call is an evolving datastructure instead of a hard-coded list of commands. Each node has a reference to its continuation (the next to run node) passed as parameter; no method returns, and without PTC the stack will always grow. LongJmp cuts the stack, and trampolines are a slow alternative implementation via while-loop.
Dec
25
comment Is anything in programming truly evil?
@acidzombie24: You only need stacktrace informations for debugging, so either you would use a debugger or won't need stacktraces at all. In C, C++, and probably in all functional languages, too, you can't have stack traces while not debugging, but you are allowed to implement infinite recursions and CPS thanks to some TCOs (tail call optimizations), especially PTC and TCR (tail call recursion). I don't know about C# or .NET, but at least Java's Byte Code and ECMAScript are not designed to be optimized in these ways at all; C/most other languages do not have this very questionable restriction.
Dec
24
comment Is anything in programming truly evil?
SetJmp+LongJmp can be used to realize CPS (Continuation passing style) via Tail Calls using languages/compilers without PTC (Proper tail calls). It is an optimized version of trampolining.see en.wikipedia.org/wiki/Tail_call#Through_trampolining and en.wikipedia.org/wiki/Continuation#Kinds_of_continuations
Dec
24
comment Is anything in programming truly evil?
@acidzombie24: huh? whow! did not think of that. exceptions seem to be even more complex than I thought. Still, I could think of an implementation that calls all destructors and makes then a LongJmp instead of unwinding the stack. that would probably be even more efficient (depending on the LongJmp implementation), but would need a 2nd stack for object and function pointers.
Dec
22
comment Is anything in programming truly evil?
try/finally/catch+throw are implemented via Setjmp+LongJmp.
Dec
14
comment What's the “normal” range for typing speed for developers?
oh, aah… yesss… with the pinky finger on shift. still better than the three-finger-on-shift+nose-combo. but hey, I do not program any lisp. ;)
Dec
14
comment Would you use C, today, for a software project?
@Jonas: I did know that. I'm using Gentoo linux, so, I have every program compiled with my own choosen flags. You are right with the programs other people did write (for windows) and not optimize to newer cpu features. Optim·s based on runtime-analysis can be done with the compiler from intel. Others that are derived from functional languages are: PTC(Proper-tail-calls) and the possibility to remove the stack even without any GC. (Table-next-to-code boosts only functional languages with closures instead OOP.) JBC does not even allow PTC and some other optim·; I do not know that much about C#.
Dec
14
comment Would you use C, today, for a software project?
@Jonas: Fast and portable, that would be neither Java nor C#. C++ is portable across platforms and embedded devices like microcontroller, and C is even portable (as foreign functions) to other languages. Both are faster than non-functional-and-therefore-stack-based-but-still-garbage-collected languages. You do not need both: a stack and a garbage collector.
Dec
5
comment What are the hardest parts of the C++/C#/Java programming languages?
Java += outsmarting the GC (to not leak memory or fight against the GC)
Dec
5
comment What are the hardest parts of the C++/C#/Java programming languages?
C++ += Boost library and having read Scott Meyers books.
Dec
5
comment What's the worst question you were ever asked at interview?
They wanted a questionable answer?! Even a circular cover could fall through, iff the hole would have been designed to allow that. There are two holes: the cover fits into the big hole and then lies above the smaller (hidden) hole. Only the shape of the smaller hole decides wether the cover could fall through or not. There exist square covers for octagonal holes, that cannot fall through. (At least in my basement.)
Dec
4
comment What's the worst question you were ever asked at interview?
LOL! and Ouch! What was your answer? A counterquestion?
Dec
4
comment What's the worst question you were ever asked at interview?
This was definitely a trick question: 1.) The coding style question is about what the interviewee would do in a situation of free choice, which is not given. 2.) The question itself /seems/ to be a stupid question, so there will most likely be a /hidden/ question, whose answer will be implied by the other. 3.) There were (how many?) bugs to be found.
Nov
10
comment Beautiful Erlang Code
oh, i just found this click-through slide show: slideshare.net/bos31337/…
Nov
9
comment Beautiful Erlang Code
@Inaimathi: "networks of inter-communicating nodes", yeah, that might be very easy in Erlang, but I'm not that sure about reimplementing already existing protocols. In Haskell, I'd implement a library that wraps the TCP/Socket lib, and then use the Binary lib for serialization of Haskell values (which sounds of more than it is.). I did sth like that in my diploma thesis. It might look as easy as in Erlang, but I don't remember how Erlang comunicates over network. Dependant of the task, I would then prefer to design the flow with Arrows(fancy mathemagical stuff) instead of Actors(processes).
Nov
9
comment Beautiful Erlang Code
@Inaimathi: One example: Suppose, I already have an algorithm and want some parts of it parallelized to an unknown number of cpus. In that case, I just specify which chunks should be evaluated parallel (par) and which sequential (pseq). That is as easy as tagging on stackexchange.com, see <haskell.org/ghc/docs/6.12.2/html/users_guide/…;. The compiled program will have the number of OS-threads (=cpus) at the command line specified, on which it should run its internal lightweight haskell-level threads.