Sort
Profile photo for Jean Yang

Here is what I think makes a good programming language:

  1. Has a well-defined semantics that makes it easy to reason about what your program will do.
  2. Has nice library support for data structures, interfacing with the operating system, etc. (C++ STL, OCaml's batteries).
  3. Programs written in the language are easy to read.
  4. Allows you to write at least some things that have good performance. (Domain-specific is okay.)
  5. Has more than one person maintaining it.


Here is why programming languages get adopted:

  1. Accident/legacy reasons.
  2. Yields good performance on a small set of operations (Fortran, Matlab).
  3. Has

Here is what I think makes a good programming language:

  1. Has a well-defined semantics that makes it easy to reason about what your program will do.
  2. Has nice library support for data structures, interfacing with the operating system, etc. (C++ STL, OCaml's batteries).
  3. Programs written in the language are easy to read.
  4. Allows you to write at least some things that have good performance. (Domain-specific is okay.)
  5. Has more than one person maintaining it.


Here is why programming languages get adopted:

  1. Accident/legacy reasons.
  2. Yields good performance on a small set of operations (Fortran, Matlab).
  3. Has a good set of libraries.
  4. Named in a way that causes people to confuse it with another programming language. ::cough:: Javascript.
  5. People learn it in school.
Profile photo for Assistant
Assistant

A good programming language typically possesses several key characteristics that enhance its usability, efficiency, and versatility. Here are some important factors:

1. Readability and Simplicity

  • Clear Syntax: A language should have a syntax that is easy to read and understand, which helps developers quickly grasp code, reducing the learning curve.
  • Minimalism: Avoiding unnecessary complexity allows programmers to focus on solving problems rather than deciphering convoluted syntax.

2. Expressiveness

  • Conciseness: The ability to express complex ideas in fewer lines of code is valuable. A good programm

A good programming language typically possesses several key characteristics that enhance its usability, efficiency, and versatility. Here are some important factors:

1. Readability and Simplicity

  • Clear Syntax: A language should have a syntax that is easy to read and understand, which helps developers quickly grasp code, reducing the learning curve.
  • Minimalism: Avoiding unnecessary complexity allows programmers to focus on solving problems rather than deciphering convoluted syntax.

2. Expressiveness

  • Conciseness: The ability to express complex ideas in fewer lines of code is valuable. A good programming language allows developers to write more with less.
  • Rich Standard Library: A comprehensive standard library provides pre-built functions and modules that facilitate development without needing to reinvent the wheel.

3. Performance

  • Efficiency: A good language should allow for high-performance applications, whether through compiled languages that produce fast executables or interpreted languages that optimize runtime performance.

4. Tooling and Ecosystem

  • Development Tools: Strong support for IDEs, debuggers, and other development tools enhances productivity.
  • Community and Libraries: A vibrant community and a wealth of third-party libraries and frameworks can significantly accelerate development.

5. Portability

  • Cross-Platform Compatibility: The ability to run on multiple platforms without needing major changes in code is crucial for widespread adoption.

6. Type Safety

  • Static vs. Dynamic Typing: A good programming language should balance type safety with flexibility. Static typing can catch errors at compile time, while dynamic typing can offer greater flexibility.

7. Concurrency and Parallelism

  • Support for Multithreading: As applications increasingly require concurrent processing, a language that simplifies writing concurrent code is advantageous.

8. Community and Support

  • Active Community: A strong community can provide support, documentation, and resources for learning and troubleshooting.
  • Regular Updates: A language that is actively maintained and updated with new features and security patches is more likely to remain relevant.

9. Domain Suitability

  • Specialization: Some languages are designed for specific domains (e.g., R for statistics, JavaScript for web development). A good language should align well with its intended use cases.

10. Learning Curve

  • Accessibility: A good programming language should be approachable for beginners while still being powerful enough for advanced users.

Conclusion

Ultimately, the "best" programming language can vary based on the specific needs of a project or developer. Factors such as the application domain, team expertise, and project requirements play a significant role in determining which language is most suitable.

The best way to hire software developers depends on your needs, but here’s what’s worked well for me:

  1. Define your project clearly: Before you start searching, write out exactly what you need—features, platform, tech stack, and timeline. A clear plan saves a lot of back-and-forth later.
  2. Check freelance platforms: I’ve had great luck with Fiverr. You can find software developers for almost any project, from web and mobile apps to custom tools. It’s nice because you can filter by skill, budget, and delivery time, so you’re not wasting time scrolling through profiles that don’t fit.
  3. Look at portfolio

The best way to hire software developers depends on your needs, but here’s what’s worked well for me:

  1. Define your project clearly: Before you start searching, write out exactly what you need—features, platform, tech stack, and timeline. A clear plan saves a lot of back-and-forth later.
  2. Check freelance platforms: I’ve had great luck with Fiverr. You can find software developers for almost any project, from web and mobile apps to custom tools. It’s nice because you can filter by skill, budget, and delivery time, so you’re not wasting time scrolling through profiles that don’t fit.
  3. Look at portfolios and reviews: A good developer will have examples of their work and feedback from past clients. This gives you a sense of their skills and whether they’re reliable. On Fiverr, this info is right on their profile, which makes the process easy.
  4. Communicate clearly: Once you’ve found a potential developer, make sure you explain your project in detail. This includes deadlines, deliverables, and any tech specifics. Good communication is key to getting what you want.
  5. Start small: If you’re unsure about a developer, test the waters with a smaller task or part of the project. This helps you gauge their skills before committing to something bigger.

Platforms like Fiverr are great because they simplify the whole process. I’ve used it to hire developers for both small and large projects, and it’s been super reliable. Just take the time to review profiles and be clear about your needs—it’ll save you a lot of hassle.

Profile photo for Martin Thoma

I agree with Jean Yang, but I want to add a few bits which are important to me:

I agree with Jean Yang, but I want to add a few bits which are important to me:

  • Good documentation: Every function should be well-defined, but also have some examples how to use it and hints about potential problems. The documentation should be online, hosted at an "official" source and directly linking to functions / methods / objects / classes / ... should be possible.

    Good examples are:
    - PHP with
    PHP Manual - Manual
    - Python with
    2. Built-in Functions
    - Ruby with
    Index of Files, Classes & Methods in Ruby 2.1.5 (Ruby 2.1.5)
    - TCL with
    Tcl Commands

    OK examples are:
    - Java with
    Java Platform SE 7

    Bad examples are:
    - JavaScript (ECMA): There is
    JavaScript, but it is not official
    - C++
  • Community: This one is hard or even impossible to measure. From personal experience, I would say that Python, PHP, C++, Java, JavaScript have a good community (on Stack Overflow), but TCL, X10 and Prolog don't have that.
  • Package distribution: Python has the possibility that users package their libraries (modules) to packages and distribute them via PyPI - the Python Package Index / pip (a command line tool). I think ruby has the same with gems and Java also has something similar (how was that called?). I think for Perl it is CPAN.

    There are certainly differences in quality of the package distribution.
  • Good, common solutions for common problems: Some problems are very common, like generating a documentation for your code, writing tests, parsing command line parameters. Every language should have a standard way to do so which leads to reasonable results.
  • Conventions: Naming schemes as well as other conventions lead to code which looks familiar and thus makes it easier to read other peoples code.
Profile photo for Cameron Reuschel

All current answers lack a very important aspect:

The best way to do anything should always be the laziest way

Take Kotlin for an example: every class is final until declared open. Making an immutable variable is no additional work compared to making a mutable one (var vs val)

Compare that to Java, where ideally you'd have everything be final unless required otherwise. Or C++ where you'd want to have everything const unless explicitly required otherwise.

Another example is Rust: immutable values (C++ const) are “let x” compared to “let mut x”. C++ RAII and move semantics are the language’s default

All current answers lack a very important aspect:

The best way to do anything should always be the laziest way

Take Kotlin for an example: every class is final until declared open. Making an immutable variable is no additional work compared to making a mutable one (var vs val)

Compare that to Java, where ideally you'd have everything be final unless required otherwise. Or C++ where you'd want to have everything const unless explicitly required otherwise.

Another example is Rust: immutable values (C++ const) are “let x” compared to “let mut x”. C++ RAII and move semantics are the language’s default way of handling resources properly.

Remember that 50% of programmers will always be junior developers (according to Uncle Bob Martin) and therefore prefer to use the laziest way without thinking. So making the best way the laziest automatically improves overall code written in that language.

Otherwise the most three important aspects for me are

  1. An extensive and well-maintained standard library (Scala and C#, …)
  2. Easy construction and destructuring of tuples and record data structures (Python, Scala, C#7, Rust, …)
  3. First class collection support

A good standard library massively reduces the need for external dependencies, which in turn reduces learning time for a new project for new developers which already have experience with the language.

Handling data in a concise way is important. And returning two values if often a necessity. So nothing is worse than having to create an entirely new class with fields, getters and maybe setters, equals and hashcode implementations for returning two values (thanks Java). C#, C and C++ work around this by enabling you to pass a reference or pointer to a local variable to a function which then sets this variable. But output parameters are confusing as we expect parameters to be a function’s input. But even in languages with nice struct syntax (C#6), binding the return values to different variables takes boilerplate code. Wouldn't you much rather have something like

  1. def pointTimesTen(x: Int, y: Int) = (x * 10, y * 10) 
  2. val (x, y) = pointTimesTen(7, 13) 

Many languages additionally provide shorthand for structures like case classes (Scala) or data classes (Kotlin). But that's another topic.

Another important aspect is first class collection support. In many earlier languages, collections are hard to use. Take C arrays for example, where you have to pass the length around as well. Or Java ArrayLists, which had no useful literal notation until Java 10 and required a for-loop for everything remotely useful. Compare that to languages like Rust, Dart and Scala (example):

  1. val myList = List(1, 2, 3) 
  2. val timesTwo = myList.map(_ * 2).toSeq 
  3. val mySet = myList.toSet 
  4. val oddNumbers = myList.filter(_ % 2 == 1) 
  5. (myList ++ timesTwo ++ oddNumbers).forEach(println) 
  6.  
  7. val myMap = Map('a' -> 1, 'b' -> 2) 
  8. val one = myMap('a') 
  9. val doubled = myMap.mapValues(_ * 2) 

Collections are always important, whatever you do, and using them concisely and expressively is probably the most important thing for a modern programming language.

So, that's it. This answer is far as complete, but then again the other answers already cover a broad range of topics. So I suggest you read them as well. Cheerio!

Profile photo for Davide Cannizzo

Originally answered: What makes a programming language perfect?

Nothing. No language will ever be perfect — every language is most suited for something and completely detrimental for something else.

However, an almost perfect language should either be object–oriented or employ a paradigm better than OOP that's yet to be invented.

Adapting to everyone's preferred paradigm like it's been said makes no sense. A language should be designed under a philosophy: if it tries to do everything, it will do everything poorly.

Designing means taking choices. Getting rid of the design stage by trying to make ev

Originally answered: What makes a programming language perfect?

Nothing. No language will ever be perfect — every language is most suited for something and completely detrimental for something else.

However, an almost perfect language should either be object–oriented or employ a paradigm better than OOP that's yet to be invented.

Adapting to everyone's preferred paradigm like it's been said makes no sense. A language should be designed under a philosophy: if it tries to do everything, it will do everything poorly.

Designing means taking choices. Getting rid of the design stage by trying to make everything fit in the same language will only encourage terrible practices. How would code be shared among people if a language supports multiple paradigm? Imagine you're developing a software using OOP but are only able to find a functional library that does what you're looking for; you'd have to fit a functional library within an OOP application, or write a whole wrapper for the library to get rid of FP.

And above is indeed what happens with JavaScript: there are a lot of libraries available on NPM, but there is simply no consistency design–wise. You end up writing crappy code that is polluted with different paradigms one against each other.

A language should encourage certain design practices by making difficult–to–impossible to come up with an inadequate design that is valid code for that language. Be focused is what matters the most in language design.

Boost your efficiency with refactorings, code analysis, unit test support, and an integrated debugger.
Profile photo for Ian Joyner

Good languages are very formally designed, not just context-free syntax in EBNF, but formal semantics defined independent of any machine constraints (as will be reflected in operational and translational semantics), but defined in denotational and axiomatic semantics.

While it might sound that such complex language theory will end up with very esoteric and hard-to-understand languages, it is the reverse. These techniques will help design clean and clear languages that do what you expect — languages free of cruft and nasty surprises.

Language design needs to be

Good languages are very formally designed, not just context-free syntax in EBNF, but formal semantics defined independent of any machine constraints (as will be reflected in operational and translational semantics), but defined in denotational and axiomatic semantics.

While it might sound that such complex language theory will end up with very esoteric and hard-to-understand languages, it is the reverse. These techniques will help design clean and clear languages that do what you expect — languages free of cruft and nasty surprises.

Language design needs to be tasteful — it is what is NOT in a language, not what is included. Too many industrial languages have been designed by people who want this or that, or accepted non-essentials as being fundamental. We end up with messes such as C++, just trying to compete by including all features of all other languages. The followers (cultists) of such languages make poor excuses such as “that is what is needed for ‘real world’ programming”. That just shows a complete non-understanding of the simplicity, yet power of programming.

For instance many think that pointers as in C are a fundamental. They are only an implementation mechanism and should be hidden behind a language. That is a language handles the details of locations (l-values) and programmers don’t need to handle those details. But worse, when programmers can manipulate addresses, setting something that referred to this, refer to that, it undermines the high-level reasoning about program correctness, but the low-level security of a system undermining the execution mechanism. Hackers love that — but languages and the platforms they run on must be secure. Languages that include C-style pointers are not just tasteless, but dangerous.

The best languages are designed by people who have deeply studied language design. John Backus was one of the originals in FORTRAN and ALGOL, the Niklaus Wirth (from Pascal to Oberon), and Bertrand Meyer who wrote the book ‘Introduction to the Theory of Programming Languages’ and also some books referenced below.

Unfortunately, being a language designer gives widespread recognition and fame, and people have been attracted to this and designed many languages without good knowledge. But when someone has little, they are more vocal about their ‘achievements’ and these languages have formed cults around them, despite their egregious flaws that place burden on the programmer that should not be there.

Here are a couple of languages which are well designed and should be the paradigms of modern languages.

The two paradigms of OO, but opposite poles are Smalltalk and Eiffel. Smalltalk is the ultimate in dynamic languages leaving checking to run time, Eiffel the ultimate in static compile-time checking. But they both do this very well. Most other languages – particularly ‘industry standard’ are in between and do fairly poor implementations of OO. Such languages obfuscate OO rather than present it cleanly.

Eiffel at Codeboard Tutorial

https://webcourses.inf.ethz.ch/se_courses/edx/eiffel_tutorial/?anchor=declaring_a_class

Touch of Class (Eiffel)

This is a book for beginning university students that explains much of the details behind computing. It goes all the way from basics to advanced topics such as lambda calculus and complex, large-scale software development (software engineering).

Touch of Class
Bertrand Meyer TOUCH OF CLASS Learning to Program Well with Objects and Contracts

Object-oriented Software Construction (Eiffel)

For a more detailed look at software development for professionals, but at least first section will explain what we should be trying to do (which is programming, not coding). This is a classic on programming and OO.

Object-Oriented Software Construction - Wikipedia
Book by Bertrand Meyer Object-Oriented Software Construction , also called OOSC , is a book by Bertrand Meyer , widely considered a foundational text of object-oriented programming . [ citation needed ] The first edition was published in 1988; the second edition, extensively revised and expanded (more than 1300 pages), in 1997. Many translations are available including Dutch (first edition only), French (1+2), German (1), Italian (1), Japanese (1+2), Persian (1), Polish (2), Romanian (1), Russian (2), Serbian (2), and Spanish (2). [ 1 ] The book has been cited thousands of times. As of 15 December 2011 [update] , The Association for Computing Machinery 's (ACM) Guide to Computing Literature counts 2,233 citations, [ 2 ] for the second edition alone in computer science journals and technical books; Google Scholar lists 7,305 citations. As of September 2006 [update] , the book is number 35 in the list of all-time most cited works (books, articles, etc.) in computer science literature, with 1,260 citations. [ 3 ] The book won a Jolt award in 1994. [ 4 ] The second edition is available online free. [ 5 ] Unless otherwise indicated, descriptions below apply to the second edition. The book presents object technology as an answer to major issues of software engineering, with a special emphasis on addressing the software quality factors of correctness, robustness, extendibility and reusability. It starts with an examination of the issues of software quality, then introduces abstract data types as the theoretical basis for object technology and proceeds with the main object-oriented techniques: classes , objects , genericity , inheritance , Design by Contract , concurrency , and persistence . It includes extensive discussions of methodological issues. Preface etc. Part A: The issues 1 Software quality 2 Criteria of object orientation Part B: The road to object orientation 3 Modularity 4 Approaches to reusability 5 Towards object technology 6 Abstract data types Part C: Object-oriented techniques 7 The static structure: classes 8 The run-time structure: objects 9 Memory management 10 Genericity 11 Design by Contract: building reliable software 12 When the contract is broken: exception handling 13 Supporting mechanisms 14 Introduction to inheritance 15 Multiple inheritance 16 Inheritance techniques 17 Typing 18 Global objects and constants Part D: Object-oriented methodology: applying the method well 19 On methodology 20 Design pattern: multi-panel interactive systems 21 Inheritance case study: “undo” in an interactive system 22 How to find the classes 23 Principles of class design 24 Using inheritance well 25 Useful techniques 26 A sense of style 27 Object-oriented analysis 28 The software construction process 29 Teaching the method Part E: Advanced topics 30 Concurrency, distribution, client-server and the Internet 31 Object persistence and databases 32 Some O-O techniques for graphical interactive applications Part F: Applying the method in various langu

Object-oriented Concepts

http://se.ethz.ch/~meyer/publications/cacm/eiffel_sigplan.pdf

Free Smalltalk Books

Free Online Books
I started to be fed up to see all the books I like to be out of print, so I started to contact authors and collect their old books. I would like to thanks them all and their publishers as well. If you know an author that is willing to give to the community a book, please give him my email. Now if you like these books and want to help me continue support me. I added some other material because they illustrate the philosophy behind Smalltalk. Squeak by Example . Andrew P. Black, Stéphane Ducasse, Oscar Nierstrasz and Damien Pollet.Square Bracket Associates, 2007. It is intended for both students and developers, will guide you gently through the Squeak language and environment by means of a series of examples and exercises. This book is made available under the Creative Commons Attribution-ShareAlike 3.0 license. You can either download the PDF for free, or you can buy a softcover copy from lulu.com . (You can also pay for the PDF download from www.lulu.com , if you would like to make a contribution to this effort, but you are under no obligation.) Smalltalk design pattern companion book drafts . Sherman Alpert, Kyle Brown, and Bobby Woolf. Addison-Wesley, 978-02011846241998. The chapters listed here are not in their final form but more in draft form. Buy the book it is really excellent. Smalltalk by Example: the Developer's Guide Alex Sharp, McGraw Hill Text; ISBN: 0079130364, 1997. This book covers all kinds of issues basic level, design, testing... I liked it a lot. The code and the book as a single file containing everything are available. Thank again Lukas Renggli for his effort for converting everything from Word. Thanks a lot Alec and thanks McGraw-Hill http://books.mcgraw-hill.com/ They were really nice with us so think about it if you hesitate to buy one of their books. Not all the publishers are that open-minded. Smalltalk With Style (Volume One) by Edward Klimas, Suzanne Skublics and David A. Thomas. ISBN: 0-13-165549-3, Publisher: Prentice Hall, Copyright: 1996. A great and small book that everybody should read. Thanks Ed, Suzanne and Dave to give it for free. We would like to OCR it but we do not have time now. If you have a better cover please send it to me. Inside Smalltalk (Volume One) , by LaLonde, Wilf R. and Pugh, John R., Prentice-Hall, 1990, ISBN 0-13-468414-1. We would like to OCR it but we do not have time now. Inside Smalltalk (Volume Two) , by LaLonde, Wilf R. and Pugh, John R., Prentice-Hall, 1990, ISBN 0-13-468414-1. We would like to OCR it but we do not have time now. A Little Smalltalk , by Tim Budd, Addison-Wesley 1987. Many thanks to Tim Budd and his publisher. Please have a look at http://www.aw.com/catalog/academic/discipline/1,4094,69948,00.html . The Art and Science of Smalltalk , by Simon Lewis, Prentice-Hall 1995-1999. Many thanks to the original publishers of this book Prentice-Hall, the responsible of the

Pharo (Smalltalk)

Pharo - Welcome to Pharo!
The immersive programming experience Pharo is a pure object-oriented programming language and a powerful environment, focused on simplicity and immediate feedback (think IDE and OS rolled into one).

Squeak (Smalltalk)

Squeak/Smalltalk

Cincom (Smalltalk)

http://www.cincomsmalltalk.com/main/products/visualworks/visualworks-tutorials/
Introduction to the Smalltalk Programming Language

What Smalltalk Does?

DevOps Archives
DevOps Archives - OpenText Blogs
Profile photo for Yang Jerng Hwa

Which "good" are we talking about? :)

  • Mechanical Transparency? A language should have semantics that expose the underlying structure of the machinery. Ideally, this means that you have the option to do manual memory management and play with pointers. Example: C.
  • Safety? On the other hand, we don't want to leave loaded guns lying around the kindergarten, so the semantics of a language should also enable varying degrees of control over the risk-versus-control trade-off that programmers should be allowed to take. Example: Hack, Erlang.
  • Expressiveness? Various people and cultures tend to think about

Which "good" are we talking about? :)

  • Mechanical Transparency? A language should have semantics that expose the underlying structure of the machinery. Ideally, this means that you have the option to do manual memory management and play with pointers. Example: C.
  • Safety? On the other hand, we don't want to leave loaded guns lying around the kindergarten, so the semantics of a language should also enable varying degrees of control over the risk-versus-control trade-off that programmers should be allowed to take. Example: Hack, Erlang.
  • Expressiveness? Various people and cultures tend to think about the world in different ways. If a computer language has semantics that more closely reflect the landscape of a particular domain, it takes less effort ("there are fewer transformations") for someone in that domain to get things done with that language. Often, computer programmers will want computer languages to reflect natural language. Example: domain-specific languages, scripting languages like JavaScript, PHP, Python, Ruby.
  • Mathematical Elegance? It would be nice to have electronics that reasoned about the world in an elegant mathematical fashion, someday (if it's even possible without mechanical memory management). However, at this point in history, electronics and mathematics work rather differently - which is why the first point above is important. However, as humans within a tradition of mathematical thought, we would like to use abstract ideas such as functions, sets, and recursion to think about our programs. Some languages have clear and simple representations of such abstract ideas. Example: Lisp, Haskell.
  • Cross-platform Compilation? ("cross-compilability") A text, in the literary sense, is just a bunch of marks on paper. Computer languages are no different. They only "mean something," within the context of a transformation. Compilers transform source code that is written by humans, into other forms that different run-time systems can understand, step-by-step, until they reach an underlying physical processor. Some apps can run on Windows, and not on OS-X, on the same laptop - specifically because there are different pieces of (software) machinery in between the source code and the underlying electronics. In such an environment, is (socially/operationally) beneficial for a language to have enough accompanying compilers, interpreters, or build-chains in its eco-system to enable the initial source code to be transformed into various forms that are usable on different underlying software/hardware environments. Example: JVM, LLVM.

Just some initial thoughts. There are many good points in other answers, that I'll try to avoid repeating.

Where do I start?

I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.

Here are the biggest mistakes people are making and how to fix them:

Not having a separate high interest savings account

Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.

Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.

Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of th

Where do I start?

I’m a huge financial nerd, and have spent an embarrassing amount of time talking to people about their money habits.

Here are the biggest mistakes people are making and how to fix them:

Not having a separate high interest savings account

Having a separate account allows you to see the results of all your hard work and keep your money separate so you're less tempted to spend it.

Plus with rates above 5.00%, the interest you can earn compared to most banks really adds up.

Here is a list of the top savings accounts available today. Deposit $5 before moving on because this is one of the biggest mistakes and easiest ones to fix.

Overpaying on car insurance

You’ve heard it a million times before, but the average American family still overspends by $417/year on car insurance.

If you’ve been with the same insurer for years, chances are you are one of them.

Pull up Coverage.com, a free site that will compare prices for you, answer the questions on the page, and it will show you how much you could be saving.

That’s it. You’ll likely be saving a bunch of money. Here’s a link to give it a try.

Consistently being in debt

If you’ve got $10K+ in debt (credit cards…medical bills…anything really) you could use a debt relief program and potentially reduce by over 20%.

Here’s how to see if you qualify:

Head over to this Debt Relief comparison website here, then simply answer the questions to see if you qualify.

It’s as simple as that. You’ll likely end up paying less than you owed before and you could be debt free in as little as 2 years.

Missing out on free money to invest

It’s no secret that millionaires love investing, but for the rest of us, it can seem out of reach.

Times have changed. There are a number of investing platforms that will give you a bonus to open an account and get started. All you have to do is open the account and invest at least $25, and you could get up to $1000 in bonus.

Pretty sweet deal right? Here is a link to some of the best options.

Having bad credit

A low credit score can come back to bite you in so many ways in the future.

From that next rental application to getting approved for any type of loan or credit card, if you have a bad history with credit, the good news is you can fix it.

Head over to BankRate.com and answer a few questions to see if you qualify. It only takes a few minutes and could save you from a major upset down the line.

How to get started

Hope this helps! Here are the links to get started:

Have a separate savings account
Stop overpaying for car insurance
Finally get out of debt
Start investing with a free bonus
Fix your credit

Profile photo for Carlo Mazzini

Having worked with many languages, I would say:

A good programming language is the one that makes it easier for you to do your job and you feel confortable with.

So, I’ll expand a little. While all of the answers are really good and make sense, it’s not ONLY about the language, but the user. Why is it, that being Java and C# almost identical, some people prefer Java while others go for C#?

The answer is, because of the need. The language is good for WHAT?

C++ is a terrible choice for interactive web site. Because it’s useless, since browsers don’t undestand C++. Browsers understand HTML, CSS and J

Having worked with many languages, I would say:

A good programming language is the one that makes it easier for you to do your job and you feel confortable with.

So, I’ll expand a little. While all of the answers are really good and make sense, it’s not ONLY about the language, but the user. Why is it, that being Java and C# almost identical, some people prefer Java while others go for C#?

The answer is, because of the need. The language is good for WHAT?

C++ is a terrible choice for interactive web site. Because it’s useless, since browsers don’t undestand C++. Browsers understand HTML, CSS and JavaScript.

But C++ is great for operating systems, device drivers and game development (among other things)

So, I stand with my answer.

Your response is private
Was this worth your time?
This helps us sort answers on the page.
Absolutely not
Definitely yes
Profile photo for Art Kagel

My criteria:

  • Is the language internally consistent? Ada and PL/1 were attempts to merge the syntax and features of multiple existing programming languages. To my mind [and I have learned both and used PL/1 in anger] neither is internally consistent as a consequence. Some syntax follows one language’s standard while other syntax is completely different. This makes these languages difficult to learn and increases code time errors.
  • Does it have the features to complete the projects for which it is intended (or selected for that matter)?
  • Do applications written in it perform well enough to meet proje

My criteria:

  • Is the language internally consistent? Ada and PL/1 were attempts to merge the syntax and features of multiple existing programming languages. To my mind [and I have learned both and used PL/1 in anger] neither is internally consistent as a consequence. Some syntax follows one language’s standard while other syntax is completely different. This makes these languages difficult to learn and increases code time errors.
  • Does it have the features to complete the projects for which it is intended (or selected for that matter)?
  • Do applications written in it perform well enough to meet project SLAs?
  • Is it frugal with system resources that may be scarce?
Get a consultation about your software development needs. Contact ELEKS.
Profile photo for Douglas Goodall

I think a good programming language would be one that is a combination of things. Easy to read, easy to write, reasonable performance. A good balance of prototyping speed and run time performance. Computers are so fast these days, that a language doesn’t have to be excessively optimized to do a fair job of performing.

Profile photo for Carlos Miguel Farías

A2A. Look at the historical evolution of the demand for a language. Tiobe has very good graphics (although I am not very convinced by his weighting criteria). Look at the IEEE Spectrum index. There are many other indexes. If a language appears in all these indexes in the first 5 places, it is because it is promising.

Profile photo for Ross Driedger

One that someone will pay me to write in.

Profile photo for Daniel Super

The way it works suits the problem you are trying to solve and you understand how to use it.

Profile photo for Christoph Karle

Any good programming language is isomorphic to Lisp. The simpler the isomorphism, the better the language.
Oh god, I sound like someone with a long beard that wears suspenders and constantly has an arrogant smirk on his face ... but the truth is the truth ;-)

Profile photo for Harry Dewulf

To be strictly logical, the most notable quality of a perfect programming would be unusability. The programs would not run, compilers would lock up, etc.

The perfect programming language would be like the perfect lending library: the book you want is always on the shelf, because it's glued to the shelf.

Profile photo for Roddy MacPhee

Adaptability. Because, not all people care for imperative languages, or declarative, or functional, etc. It must be able to fill everybody's needs. Code must work under all circumstance.

Profile photo for Den Is

A good programming language is such a language nobody complains about.

There are only two kinds of languages: the ones people complain about and the ones nobody uses.

-- Bjarne Stroustrup

=>
A good programming language is a language that is used by nobody.

Profile photo for Peter Shaw

Anything that makes that language a great choice for expressing solutions to problems, that said language was invented to work with.

Languages are tools, different languages work better for some tasks than others, no one particular language is superior to another, they all have their strengths and weaknesses.

The ONLY way your going to get the answer you want to this question, is if you ask what makes a for a good language in a given scenario.

About · Careers · Privacy · Terms · Contact · Languages · Your Ad Choices · Press ·
© Quora, Inc. 2025