Your criteria for using a new technology or programming language

What are your criteria or things that you consider when you start using a programming language or technology?

Two of the most common explanations I've heard are as follows:

  • It should be “fun” (what I heard from technical people).
  • He should be able to solve our problem (what I heard from business people).

So what's yours?

+4
source share
11 answers

My criteria are simple:

  • Wow factor
  • just
  • performs all actions
  • fast
+1
source

I made this change several times in my career spanning various companies, switching from C to Java to Ruby to Haskell for most of my software development.

In all cases, I sought a more expressive power and better abstractions. It always depends on the needs of the business: how can I better develop cheaper software? For me, the problem with this problem is “fun,” so it’s pretty fun with it. However, substantiating business value for managers can be difficult; they often do not have the technical skills to understand why one programming language may be better than another, and worry about switching to a technology that they understand, even less than the current one. (I solved this problem by taking on the work of a manager: I started a company.)

It is hard to say what exactly to look for in a new language. Obviously, you do not have a detailed understanding of the language, or you are already using it or know why you did not. Great experience will bring an instinct that will make some languages ​​“enjoyable” than others, but it can be especially difficult to convince others to take a look at a new language - you won’t know exactly which features give you great benefits. An example is pattern matching: it is a function found in relatively few languages, and although I knew about it, I had no idea when I started with Haskell that this would be a key factor in improving performance.

Although this is negative (“avoid this”) advice and not positive (“do this”), one fairly simple rule is not to spend a lot of time in languages ​​very similar to those that you already know well. If you already know Ruby, learning Python is unlikely to teach you a lot of new things; Another example is C # and Java. (Although C # is starting to get some interesting features that Java doesn't have.)

Looking at what the academic community does with language can be helpful. If this is a fertile field of research for scientists, there will almost certainly be interesting material there, whereas if it is not entirely possible that there is nothing interesting to learn.

+3
source

I want him to do something easily, which is hard to do with the tools I'm used to. Therefore, I switched to Python, and then Ruby, to Java, because I could gradually build up the program, add functions easily and express programs more concisely (especially with Ruby, where I can pass blocks / Procs and have clean closures, as well as the ability to defining beautiful DSLs using blocks and output.)

I tackled Erlang because it expresses well actor-based concurrency; this simplifies network programs.

I took Haskell because it corresponded to a number of formal method tools with which I wanted to experiment.

+1
source
  • Open source.
  • Active developer community
  • An active user community with a friendly mailing list or forum.
  • Some examples and documentation, preferably a tutorial
  • Desired features (solves problems).
+1
source

If this is for my personal fun, I need very little excuse, as I like to learn new things, and the best way to learn is to do it. If this is for the employer, client or client, the bar is much higher - I must be sure that the “new material”, even after taking into account the increasing effects and costs that come at the edge of bleeding, will do a much better job of delivering to the client (or client or to the employer). This is a question of professional relations: my task is to deliver the maximum benefit to the client - have fun while this is done auxiliary and secondary. Thus, in practice, the “new” technologies (including languages) that I represent in a professional environment will usually be the ones with which I am already accustomed and confident in my free time.

+1
source

Someone once said something like:

"If learning a programming language doesn't change the way you program, it's not worth learning."

This one metric (out of many) measures the value of learning new languages ​​(or other technologies). Using this, we can offer the study of the following languages:

  • C, because it makes you better understand von Neumann architecture better than any other language (and this is a random access Turing sorting machine like sorta '...).
  • LaTeX (as a programming language, and not just as a typing system), because it makes you learn about rewriting systems as a calculation model. Here sed is similar; find out both, because they are also useful tools :-)
  • Haskell, because it teaches you about functional programming, lambda calculus (another calculation model), lazy estimation, inference type, algebraic data types (done with ease), decidability of type systems (i.e. learn to be afraid of C ++)
  • Scheme (or (other), Lisp) for its macro system, and dynamic typing and functional programming are performed somewhat differently.
  • SmallTalk to find out Object-orientation (so I hear)
  • Java to learn how to make money: D
  • Forth because wisdom bestowed forth learned implies .

... this does not explain why I am learning python or shell scripts. I think you should enlighten with a grain of salt and a shovel of pragmatism :)

+1
source
  • Must be able to solve the problem.
  • Should be more adequate to solve the problem than other alternatives.
  • Gotta be fun
  • Must have operational support either from the community or from a company advertising it.
0
source

Language should be:

  • Ease of use, training and code entry.
  • According. Many languages ​​have 50 inherited ways to do something, it increases the learning curve and becomes quite annoying. C # is one of these languages ​​for me.
  • It should provide the most useful solution with the least amount of code. On the other hand, sometimes you need a little expressiveness to make sure that you are not making a huge mistake.
  • The right tool for the right job, and possibly the right tool for any job.
0
source

My criteria a language should have:
1. New ideas. If language is another version of the Scheme, if you know it, I do not feel the need to learn this new one. I will know this if I think I will learn something new. 2. Like in another language, but better. For example, while Java and C ++ have many of the same ideas, Java garbage collection automatically makes it the best choice in many cases.

0
source
  • Get the most out of it with the least effort.
  • Extremely compatible with various protocols, out of the box
  • Fast
  • It has many libraries created for only 99% of web developers (PDF, email, reporting, etc.).
0
source

It depends on why I am learning a new language. If I study this for fun, then it must meet these criteria:

  • Is this well supported on my platform? Something that works only on Linux is not interesting for a Windows programmer.
  • Will I learn something new? In other words, is there a new way to do things?
  • Does it look like fun? I do not want to study Ada, even if she has new ways to do something.

If I study it for work, the criteria are different:

  • How mature is he? Has it been proven to work in the real world?
  • How big is the community?
  • Will this make my job easier? That is, it is worth the investment time versus just completing a task using the language I already know.
0
source

All Articles