4 ms·
What are you hiring programmers for? A science project, or a company which has to meet business goals? If the former, by all means, pick some esoteric language
by noir-york 10y ago
What are you hiring programmers for? A science project, or a company which has to meet business goals?
If the former, by all means, pick some esoteric language. If its the latter, more mundane issues like existing codebase, skillset and, I don't know, perhaps using the right tool for the job? C# can do things Python cannot and vice-versa.
Learning Scala to show off and fit in Graham's paradox is silly and doesn't prove that you are a smarter programmer. A smart programmer is someone who comes up with smart solutions; you can write crap code in any language.
- crdoconnor 10y agoI'm pretty sure what applies to Scala vs. Java programmers applies to F# vs. C# programmers. Existing code bases, etc. don't matter so much when you're sharing the same ecosystem, and the good programmers from that ecosystem will certainly choose the best language that they can within it.
- noir-york 10y agoSure, if its within the same ecosystem - at which point the diff is really just syntax. (Whats Python's ecosystem anyway?) But I doubt a moderately complex architecture can live within just one ecosystem. We use PHP, C, Lua (to script the C), Go and Python (being phased out in favour of Go) because different workloads/problems have different requirements.
- crdoconnor 10y ago>at which point the diff is really just syntax. If you think the difference between F# and C# is just syntax then you have little understanding of either language. >Whats Python's ecosystem anyway? Everything on pypi (django/flask/pandas/etc.). It doesn't have another language targeting the VM like C#/F#/Scala/Java if that's what you mean, and there won't be a paradox among programmers of that ecosystem like there is for .NET / Java. >But I doubt a moderately complex architecture can live within just one ecosystem. We use PHP, C, Lua (to script the C), Go and Python (being phased out in favour of Go) That mix of technologies suggests that you have a legacy problem (e.g. a CMS based on wordpress you can't get rid of) and technology choices that are fashion conscious (migrating python to go). I suggest reading Mozilla's story ("from python to go and back again"): https://docs.google.com/presentation/d/1LO_WI3N-3p2Wp9PDWyv5B6EGFZ8XTOTNJ7Hd40WOUHo/mobilepresent?pli=1&slide=id.g70b0035b2_1_168 https://docs.google.com/presentation/d/1LO_WI3N-3p2Wp9PDWyv5...
- noir-york 10y ago> If you think the difference between F# and C# is just syntax then you have little understanding of either language. Little understanding of F# maybe. C# - not after a decade using it! Both languages target the .Net VM - what you can do with one you can achieve, perhaps more clumsily, in the other. My point still stands: the difference between the two ultimately comes down to syntax. And its not like C# is not getting functional (LINQ) > That mix of technologies suggests that you have a legacy problem Wrong assumption. Don't assume that everyone write web apps. We're in network security and need C for high performance DNS server code. PHP is to serve our admin dashboard (not Wordpress!). PHP is fast, and works, and there are programmers for it. The transition Python to Go is an example of business considerations taking precedence over "fashion". Python was great in the early days when shipping and iterating fast mattered and we had a small customer base. But we always knew we'd outgrow it - Go is a great language: fast, concurrent, parallel and more disciplined. We need all these now that we have large customers and a growing customer base. Business needs drove the move; I am very pragmatic about these things. C++ programmers "get" Go, the transition is fast. Ironically, I find your comment makes assumptions that are "fashion conscious" - PHP is not some legacy language whose only reason to live is Wordpress. C/C++ is a great language(s) and perfect for certain tasks, but Go is increasingly encroaching on its turf. In future we may rewrite some of the C code in Go - the lack of control over GC/GC pauses/freeing memory is the main obstacle to using Go for certain performance critical tasks.
- tpetricek 10y agoBoth Assembler and Haskell target native code - what you can do with one you can achieve, perhaps more clumsily, in the other. The difference between the two ultimately comes down to syntax.
- noir-york 10y agoI get the sarcasm but yes that's true for Turing complete language. Maybe my meaning was not conveyed clearly enough; I was speaking within the context of the thread which was narrower. In practical terms, F# and C# both target the .Net VM. A more apt comparison would be between, say, PHP and C#, or Prolog and C. All Turing complete, but its not practical to use one instead of the other for particular tasks; its highly impractical to write a device driver in PHP.
- saosebastiao 10y agoI hope you are not suggesting that scala is esoteric or that it is not the right tool for the job in a huge amount of situations. It is a full on industrial language that has been proven in tons of high value and performance-demanding situations. C# might have initially taken Java as an inspiration, but ever since 2.0, Scala has been the bigger influence on its design...and rightly so. If a smart programmer is one who comes up with smart solutions, Scala can be part of that solution.
- freehunter 10y agoI think rather the implication is, don't pick Scala just because Python is more common. If you need to use Scala, use Scala. Like you said, there are plenty of situations where that is the case. But if Python is the right tool for the job, don't ignore it just to be different. The same can be said of other languages with less emotion surrounding them. If C++ is the right tool for the job, don't use C just because of ideology. You are running a business, not a religion. You can only afford to be choosy if there are multiple "right tools for the job".
- noir-york 10y agoWell put :)
- valw 10y agoI agree with you that you should pick a tool based on the project requirements, but you seem to imply that early-stage technologies are only suitable for science projects. A very simplistic perspective, and misguided advice for anyone facing such a choice IMHO.
- noir-york 10y ago> you seem to imply that early-stage technologies are only suitable for science projects Not at all. If a tech - at any stage - meets business goals, then go for it. Having said that, its fair to say that early stage tech has risks (project being abandoned, etc) that do need to be considered.