3 ms·
What is it with all the language picking and language wars? Maybe I just grew up in a good learning environment because I had to, computers were simply not fast
by tluyben2 10y ago
What is it with all the language picking and language wars? Maybe I just grew up in a good learning environment because I had to, computers were simply not fast and had very little memory; on my first home computer it only had built-in Basic so I started with that, but it was slow, so went to assembly but that was annoying for anything but games so went to Pascal and later C but that was annoying for business software, so I went to DBase/Clipper etc etc. I would say that 'a good programmer' is not that bothered by switching languages when it is the right thing to do for the job at hand. Whatever language that is, easy or hard is not very interesting in my opinion and experience.
Like I said in another thread; I picked C# for a project because the software needs to run in banks and deal with bank IT departments. That's Java/.NET and, because we needed apps as well and we were already proficient in Xamarin, we chose C#.NET. Not because I like the language (I do, especially for later versions) or think it is hard or easy, but because it fitted.
We wrote a prototype in Python before that and the first bank we worked with had the CTO looking very puzzled and then, after some research on their side, said they cannot have that in their infrastructure; Windows servers with Java/.NET they had. And the IT staff to manage that, not other 'esoteric' stuff. However, already before that, we started rewriting that prototype to C#, this was just an extra sign we did the right thing.
I do a lot of coding in PHP ; not because I particularly like it, but my clients ask for it, I have 100s of 1000s of lines of legacy code in it going back the end 90s. For my embedded work I would not (and cannot) use either C#/PHP so I would not try; assembly or C/C++ (or a Java subset).
Programming languages are tools; they are fun to play around with, but when doing real work (which includes side project), just pick something you can get shit done with the fastest/best (some balance between those) (that can be Haskell, Coq or Prolog as well; they do not have to be 'traditional' languages).
- fiedzia 10y ago> but when doing real work (which includes side project), just pick something you can get shit done with the fastest/best (some balance between those). This is where I disagree. If you do that, you are trading quality for your convenience, and as (potentially) your user, I do want you to work harder.
- tluyben2 10y agoHow am I trading those? The user has hardly ever anything to do with whatever it is built with? How would they care if the end result for them is the same? If I build a SaaS in C# because my clients will work on the sourcecode and only have C# employees while, for another SaaS project I feel I need a lot of JVM libs and no one will use the source code so I use Clojure as I have a lot of experience there; how is that trading quality for convenience? In that case it is a better tool for the job. Also: why do you want me to work 'harder'? That is a weird remark in this context potentially... I am very good at different assembly languages (mainly very restricted embedded ones like 8-bit with 16 kb etc); I would work really hard if I implement a SaaS for you in that but you really would not want me to.
- fiedzia 10y ago> How am I trading those? If you choose the easiest thing for you instead of the one that provides some guarantees of quality for me, I may be the one who loses something here. > How would they care if the end result for them is the same? There is no issue if that's the case, problem is that it often isn't. > I use Clojure as I have a lot of experience there; how is that trading quality for convenience? I am not talking about this situation. You are clearly making well informed choice (and sufficiently good one for me). Functional languages do not fall into the "easy" scope I had in mind. > Also: why do you want me to work 'harder'? So that I am not left with never ending bug chasing or exposed customer data. I expect you to adhere to certain quality standards, not to bash some code as fast at possible for your convenience. Just that.
- tluyben2 10y agoI agree with what you say. I do not see the relation between working hard or picking difficult languages or frameworks and the points you make. But generally I agree with you here. That was also the reason I mentioned the word balance in my comment; I was raised by a Dijkstra student (my father) and proofs were mentioned a lot; I studied under students of Dijkstra at the TUE when I went to uni. These people all would say you do not work 'hard enough' if you did not provide proof for your code and I am pretty sure you do not. Which means you balance your, in that respect (!), very sloppy code which you write very fast compared to when you add proofs, with stability and security which you and your users value? So why do you not work harder and provide 100% covering formal verification of your code? Because that would make little sense in most cases. So you balance.