Live data from Hacker News

Learn more programming languages, even if you won't use them

thorstenball.com

271–280 of 319 posts

Re: Learn more programming languages, even if you won't use them

#271

Earlier quoted context omitted.

I'm sad to see that you feel that way about the language; since I had exactly the opposite experience. Objective-C is a beautiful (if syntactically verbose) language, and I prefer it to C++ as an "object-oriented C". I'm actually curious what you tried doing with the language, because > I found a mediocre and pretty error-prone language. makes it seem like you didn't get a chance to dive down into the runtime and how…

why would you supoose that C++ is an object-oriented C ? the primary paradigm in C++ is generic programming, not OO.

Modern C++ kind of.

Gang of four book was written with Smalltalk and C++ examples.

Back in the 90's we had Mac OS PowerPlant, CSet++ on OS/2, OWL/VCL/MFC/ATL on Windows, Motif++ on UNIX, Telligent, and a myriad of ORM, distributed computing, image libraries and what not written in OOP C++.

Then came Java, took the best practices out from OOP C++, and two decades later 90's C++ is known as Java OOP and people act as if C++ OOP never happened.

Re: Learn more programming languages, even if you won't use them

#272

Earlier quoted context omitted.

> There is 1 proper general-purpose language in there That will depend on what the GP has done with SQL. Also, JQuery implies in Javascript. There are up to 3 general-purpose languages in there, one of which nearly any developer will know. There should be plenty of people capable of taking the codebase, but it's not a trivial single language case. The upside is that good developers will be overrepresented when compar…

> That will depend on what the GP has done with SQL. I am sure they built their UI with SQL - as opposed for example simply doing some queries, or some joined procedures at best. > Also, JQuery implies in Javascript. With uttermost likelyhood, they did not only dynamic changes of some html-documents there, but also their backend and crypthography. Enough with the snark... ("Language" is such a fuzzy term anyways. You…

You can actually build your UI with SQL, e.g PL/SQL.

Re: Learn more programming languages, even if you won't use them

#273

Earlier quoted context omitted.

I've translated several mathematical papers into code, and I must strongly disagree. The very first thing I do is translate glyphs into names relevant to the domain I'm applying the math to. It makes the rest of the process immensely easier.

I guess we'll have to agree to disagree then. I too have coded up a lot algorithms from academic papers. In my mind, yk = C * xk + D * uk is a lot clearer than position_at_time_k = output_matrix * state_at_time_k + feedthrough_matrix * input_at_time_k. The first is an idiom. The second is not.

That may make sense internal to a library, where you’ve established idioms.

But as a counterpoint, I only know what you meant by the first expression because I read the second expression.

I actually agree with you in large part, that short variable names can have more meaning within an established set of idioms because they allow you to parse whole statements at once. But there’s a trade-off involved, because mathematics can take symbology further than that’s useful.

For example:

    E[i=0;5](i**2)

    sum([i**2 for i in range(0,5)])
So it often comes down to a matter of taste.

Re: Learn more programming languages, even if you won't use them

#274
post #272

Earlier quoted context omitted.

> That will depend on what the GP has done with SQL. I am sure they built their UI with SQL - as opposed for example simply doing some queries, or some joined procedures at best. > Also, JQuery implies in Javascript. With uttermost likelyhood, they did not only dynamic changes of some html-documents there, but also their backend and crypthography. Enough with the snark... ("Language" is such a fuzzy term anyways. You…

You can actually build your UI with SQL, e.g PL/SQL.

I had a gut feeling you could ;) Interesting.

Re: Learn more programming languages, even if you won't use them

#275
This. It’s not about learning language A and B because you need it but because learning language B makes you a better developer in language A.

If you have thousands of hours doing language A, you need several thousand more to meaningfully improve your competence. It’s basically just battle scars from experience at that point.

But if you spend just a few hundred hours on learning a completely different language, that gives you a completely different set of brain tools for working in your day to day language. It’s not a luxury for a js programmed to be able to spend a hundred hours on trying rust or Haskell. It’s a cheap way of becoming a better js programmer without having to spend a thousand hours more on js.

Re: Learn more programming languages, even if you won't use them

#277

Earlier quoted context omitted.

This is one reason I love PowerShell's design that everything is case insensitive. For casual scripting, it's so nice to not have to care if it's length or Length. At least memory can help me if it's len/length but length/Length is no distinction at all. (Case sensitivity is one of my pet hates, for anti-human UX).

Interesting. I've come to basically the opposite conclusion and find case insensitivity to be counter intuitive. "Foo" and "foo" are not the same set of ascii characters; why should they map to the same thing?

"Dog" and "dog" are the same word, they are read the same, and pronounced the same. "D" and "d" are the same letter of the English alphabet, an alphabet with 26 characters not 52 characters. Why should they map to different things just because of some implementation limit behind the scenes in a computer?

Why should the ASCII table be the defining characteristic, over and above the way humans have used English for decades? ASCII "Foo" and UTF-16 "Foo" are not the same set of bytes, should they map to different things? "Foo" and "Foo" are not displayed with the same set of pixels, should they map to different things? "Foo" and "Foo" are not stored in the same memory address, nor were they typed in the same number of milliseconds over the same USB packets, why should the ASCII table internal detail matter and those details not matter?

Re: Learn more programming languages, even if you won't use them

#278
post #161

Earlier quoted context omitted.

I work for an airline. I known about constraints. If I knew only one language, I never would be at the level I am. Here is the tech stack I deal with daily. VB6 Kix scripts Powershell .net 3.5 Winforms WPF .net 4+ .net core .net asp Java JavaScript React Angular C++ Golang. If programming is a job and not your craft, it will be harder for you. You just have to practice more.

> VB6 Kix scripts Powershell .net 3.5 Winforms WPF .net 4+ .net core .net asp Java JavaScript React Angular C++ Golang That just sounds like some mess that one is forced to deal with, not reasonable software engineering. I mean yes, some jobs will drown one in useless stuff. Doesn't mean that learning the useless stuff is a virtue now.

It looks perfectly reasonable to me. VB6, KiX, Powershell and .NET suggest some part of the overall system is done through Windows desktop apps and Windows computers automation. JS, React and Angular imply that at least two frontends are involved (or possibly one under rewrite). Java, C++ and Golang are probably used for other parts.

It's only small and well-defined software that can get away in being written in one technology. For anything larger/serious, you're bound to end up in a polyglot environment.

Re: Learn more programming languages, even if you won't use them

#279
post #264

Earlier quoted context omitted.

So within those two weeks while you are “researching” how are you going to know real usage patterns with real users? Is your research going to perfectly predict where all of the bottlenecks and optimizations need to be in the entire system? Are you going to perfectly predict the size and number of VMs that you need? The size of the database? Where your users are and the average latency? Are none of your developers go…

Sure there is more to "architecting a system than just “code”.", which is exactly my whole point. Performance is a feature, it doesn't get retrofitted. There is only one shot, specially in fixed budget projects. While a perfect design is an utopia, and there will be surely some unforeseen problems, not designing at all is even worse. To calculate the initial set of VMs, database size, average users, network latency,…

Performance is a feature, it doesn't get retrofitted. There is only one shot, specially in fixed budget projects.

So you’re saying it’s not possible to add indexes, increase the size of your database, increase the number of read replicas, increase the number of servers in your web farm, reconfigure your database to be multi-master, copy your static assets to a region closer to the customer or add a CDN after an implementation? I must be imagining things that I’ve been doing with AWS....

To calculate the initial set of VMs, database size, average users, network latency, you name it, it only requires reading the RFP requirements, having technical meetings with all partners about those requirements, and having a team that knows their stuff around CS.

So “knowing CS” would have helped us predict at one of my previous companies that our customer was going to more than double in size in less than a year through an acquisition? In fact this has happened at two separate companies. The other company we more than doubled in size and revenue literally overnight.

Will “good CS design” help us predict how successful our sales team will be in closing deals? We are a SAAS B2B company where one “customer” or new implementation from a current customer can increase our volume of transactions by enough to have to increase the number of app servers or with enough implementations increase the size of our database cluster.

If it already clear from deployment scenario that at very least 4 VMs will be needed, or that a DB node will need 100 GB on average, it would be very risky just to do on the go.

So now it’s “risky” to click on a button and increase the size of our web farm by increasing the desired number of servers in our autoscaling group or is it risky to click on another button and increase the size of the VMs in our database cluster? The number of app servers we have for one process goes from 1 to 20 automatically based on the number of messages in the queue. As far as storage space, if we need a terabyte as our client base grows instead of 100GB, I’m sure AWS has some spare hard drives laying around that they can give us. But transparently adding space to a SAN even on prem has been a solved problem for a long time. Even back at a previous company where we would boast to our client that we had a whole terabyte of storage space.

As for running at scale, that should already be obvious from RFP requirements, unless we are speaking about startups dreaming of being the next FANNG

Again, you don’t have to dream of being the “next FAANG”. Mergers and acquisitions happen. Getting new clients happen (hopefully). When you are a B2B company especially when you are a SAAS B2B company with a decent sales team, a sale to a couple of “whales” can mean adding more of everything.

Also the RFP is not going to tell you that your company that you are planning on implementing and hosting a solution for x users will need to be able to scale to handle 2x in a year after a merger closes. Should we have 5 or 10x the capacity now in anticipation for our sales team producing or should we scale up as needed?

MongoDB is a very good example of running at scale without doing the necessary engineering, but they do have a good marketing department to compensate for it.

I had no problem with the scalability of Mongo at a previous company. What type of scale do you think in your experience is too much for Mongo?

Re: Learn more programming languages, even if you won't use them

#280
post #92

I couldn't agree more, but if I could make a recommendation. If you already know a mainstream OO language, you won't get much benefit out of learning another in the same arena. Going from Java to C# you will learn less than going from javascript to ocaml or Java to Haskell. The best thing (for my own learning) I ever decided to do was learn Haskell. I have never been paid to write code in Haskell but it gave me such…

> Going from Java to C# you will learn less than going from javascript to ocaml or Java to Haskell.

Depends on how you'll use C#. If you'll write Java-style OOP, you'll indeed learn very little. But C# offers much more than Java: generics, FP, LINQ, async-await, dynamic, native interop, unsafe and pointer arithmetic..

Post reply on HN