You know it’s essential to choose the right platform and tools for an IT project if you want the resulting system to be successful. Let’s take a closer look at some factors to consider when choosing the programming language you will use to write source code for your software.
Languages are Not All the Same
If you are multilingual, which of these languages would you choose to write an opera: French, German, Italian or Dutch? How about a love poem? Chances are that for each of those questions, one or two of the options stood out as suitable and one or two stood out as terribly unsuited.
As you plan what your software will do, some programming languages will be obvious misfits. Others will be appealing possibilities. You just need to decide among the ones that are appealing. Make a list of the answers to these questions:
- Will the software perform predictable sequences of activity, or unpredictable sequences?
- Must the software squeeze as much performance as it can out of the computer?
- Are specialized interfaces needed between the software and hardware devices (such as device drivers), or between the software and operating system (special hooks to operating system internals) or other applications (such as database engines)?
- Is the software a small, medium, large or very large application? Is it complex?
- What hardware platforms must the software be able to run on?
- What operating systems must the software be able to run on?
- Is availability of expertise an issue?
These are enough factors to evaluate for most projects. There may be more factors you want to include for your specific project. Next, see which languages fit your needs best.
Strengths versus Weaknesses
To the right of your list, add a column for each language under consideration. Go down the list of factors one at a time and apply a checkmark for each language that is well suited in regard to that factor. Get help about any language where you don’t personally know about its strengths and weaknesses. Your spreadsheet needs to be filled with factual information, not fads or personal feelings.
Language differences should jump out at you from the completed evaluation chart. Here are some traits that will help you fill out your chart:
- Languages that must be compiled and linked to generate an executable program, such as COBOL, C, or C++, make much faster-running software than interpretive languages such as the original BASIC or Java. These languages have to be recompiled and relinked for every target operating system.
- Interpretive languages such as Java or BASIC execute relatively slowly. Software written in these languages can be taken from one operating system to another with little effort.
- For predictable sequences of work, procedural languages make fast-running, compact programs with low overhead. For unpredictable sequences of work such as responding to human users in a windowed user interface, they are cumbersome.
- Object oriented programs are intended for unpredictable sequences of work. They take more overhead than procedural languages, so object oriented code tends not to run as fast as procedural software.
- High level languages are more easily read by people, simpler to debug, easier to maintain, and reduce the chance of such errors as memory leaks. These are languages such as COBOL, FORTRAN or PL/1. They are less flexible than low level languages such as C. High level languages cannot readily manipulate bits or directly manage hardware.
- Low level languages like procedural C or object oriented C++ can perform almost as “close to the machine” as a computer’s native assembly language. You can do nearly anything with low level languages. However, these languages are cryptic and do not include safeguards that are built into high level languages. That makes it easy for programmers to make such mistakes as memory leaks, and it makes software in these languages hard to maintain. The bigger and more complicated your software is, the more a high level language will save you from long term maintenance headaches.
Ultimate Decision
After you finish filling in your chart, some languages will have more checkmarks than others. The ones with the most checkmarks, or with checkmarks by the most important factors, are your finalists. You might even be lucky enough to find all the finalists are similarly capable for your project. In that case, any language among your finalists will do, and you can pick the one among them that you find most comfortable.
Bonnie Huval Personal Website Cookie Notice
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept”, you consent to the use of ALL the cookies.
Privacy & Cookies Policy
{"id":null,"mode":"form","open_style":"in_place","currency_code":"USD","currency_symbol":"$","currency_type":"decimal","blank_flag_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/blank.gif","flag_sprite_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/flags\/flags.png","default_amount":500,"top_media_type":"featured_image","featured_image_url":"https:\/\/bonniehuval.com\/wp-content\/uploads\/2025\/02\/close-up-glass-with-money-as-tips-scaled-133x200.jpg","featured_embed":"","header_media":null,"file_download_attachment_data":null,"recurring_options_enabled":true,"recurring_options":{"never":{"selected":true,"after_output":"One time only"},"weekly":{"selected":false,"after_output":"Every week"},"monthly":{"selected":false,"after_output":"Every month"},"yearly":{"selected":false,"after_output":"Every year"}},"strings":{"current_user_email":"","current_user_name":"","link_text":"Leave a tip","complete_payment_button_error_text":"Check info and try again","payment_verb":"Pay","payment_request_label":"Bonnie D Huval","form_has_an_error":"Please check and fix the errors above","general_server_error":"Something isn't working right at the moment. Please try again.","form_title":"Bonnie's Tip Jar","form_subtitle":"entirely optional","currency_search_text":"Country or Currency here","other_payment_option":"Other payment option","manage_payments_button_text":"Manage your payments","thank_you_message":"Thank you *so much* for supporting what I offer here!","payment_confirmation_title":"Bonnie D Huval","receipt_title":"Your Receipt","print_receipt":"Print Receipt","email_receipt":"Email Receipt","email_receipt_sending":"Sending receipt...","email_receipt_success":"Email receipt successfully sent","email_receipt_failed":"Email receipt failed to send. Please try again.","receipt_payee":"Paid to","receipt_statement_descriptor":"This will show up on your statement as","receipt_date":"Date","receipt_transaction_id":"Transaction ID","receipt_transaction_amount":"Amount","refund_payer":"Refund from","login":"Log in to manage your payments","manage_payments":"Manage Payments","transactions_title":"Your Transactions","transaction_title":"Transaction Receipt","transaction_period":"Plan Period","arrangements_title":"Your Plans","arrangement_title":"Manage Plan","arrangement_details":"Plan Details","arrangement_id_title":"Plan ID","arrangement_payment_method_title":"Payment Method","arrangement_amount_title":"Plan Amount","arrangement_renewal_title":"Next renewal date","arrangement_action_cancel":"Cancel Plan","arrangement_action_cant_cancel":"Cancelling is currently not available.","arrangement_action_cancel_double":"Are you sure you'd like to cancel?","arrangement_cancelling":"Cancelling Plan...","arrangement_cancelled":"Plan Cancelled","arrangement_failed_to_cancel":"Failed to cancel plan","back_to_plans":"\u2190 Back to Plans","update_payment_method_verb":"Update","sca_auth_description":"Your have a pending renewal payment which requires authorization.","sca_auth_verb":"Authorize renewal payment","sca_authing_verb":"Authorizing payment","sca_authed_verb":"Payment successfully authorized!","sca_auth_failed":"Unable to authorize! Please try again.","login_button_text":"Log in","login_form_has_an_error":"Please check and fix the errors above","uppercase_search":"Search","lowercase_search":"search","uppercase_page":"Page","lowercase_page":"page","uppercase_items":"Items","lowercase_items":"items","uppercase_per":"Per","lowercase_per":"per","uppercase_of":"Of","lowercase_of":"of","back":"Back to plans","zip_code_placeholder":"Zip\/Postal Code","download_file_button_text":"Download File","input_field_instructions":{"tip_amount":{"placeholder_text":"How much would you like to tip?","initial":{"instruction_type":"normal","instruction_message":"How much would you like to tip? Choose any currency."},"empty":{"instruction_type":"error","instruction_message":"How much would you like to tip? Choose any currency."},"invalid_curency":{"instruction_type":"error","instruction_message":"Please choose a valid currency."}},"recurring":{"placeholder_text":"Recurring","initial":{"instruction_type":"normal","instruction_message":"How often would you like to give this?"},"success":{"instruction_type":"success","instruction_message":"How often would you like to give this?"},"empty":{"instruction_type":"error","instruction_message":"How often would you like to give this?"}},"name":{"placeholder_text":"Name on Credit Card","initial":{"instruction_type":"normal","instruction_message":"Enter the name on your card."},"success":{"instruction_type":"success","instruction_message":"Enter the name on your card."},"empty":{"instruction_type":"error","instruction_message":"Please enter the name on your card."}},"privacy_policy":{"terms_title":"Terms and conditions","terms_body":"Some of what I make available here took quite a bit of work to pull together. If you want to use any of the material on my website, please use it with attribution and a link to it. Please avoid putting it on websites with a policy of feeding whatever they get into their AI engines. (Facebook and X are examples of such content hogs.) They would steal my work through you, and neither you nor I would like what they do with it. Thanks!","terms_show_text":"View Terms","terms_hide_text":"Hide Terms","initial":{"instruction_type":"normal","instruction_message":"I agree to the terms."},"unchecked":{"instruction_type":"error","instruction_message":"Please agree to the terms."},"checked":{"instruction_type":"success","instruction_message":"I agree to the terms."}},"email":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email address"},"success":{"instruction_type":"success","instruction_message":"Enter your email address"},"blank":{"instruction_type":"error","instruction_message":"Enter your email address"},"not_an_email_address":{"instruction_type":"error","instruction_message":"Make sure you have entered a valid email address"}},"note_with_tip":{"placeholder_text":"Your note here...","initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"empty":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"not_empty_initial":{"instruction_type":"normal","instruction_message":"Attach a note to your tip (optional)"},"saving":{"instruction_type":"normal","instruction_message":"Saving note..."},"success":{"instruction_type":"success","instruction_message":"Note successfully saved!"},"error":{"instruction_type":"error","instruction_message":"Unable to save note note at this time. Please try again."}},"email_for_login_code":{"placeholder_text":"Your email address","initial":{"instruction_type":"normal","instruction_message":"Enter your email to log in."},"success":{"instruction_type":"success","instruction_message":"Enter your email to log in."},"blank":{"instruction_type":"error","instruction_message":"Enter your email to log in."},"empty":{"instruction_type":"error","instruction_message":"Enter your email to log in."}},"login_code":{"initial":{"instruction_type":"normal","instruction_message":"Check your email and enter the login code."},"success":{"instruction_type":"success","instruction_message":"Check your email and enter the login code."},"blank":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."},"empty":{"instruction_type":"error","instruction_message":"Check your email and enter the login code."}},"stripe_all_in_one":{"initial":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"empty":{"instruction_type":"error","instruction_message":"Enter your credit card details here."},"success":{"instruction_type":"normal","instruction_message":"Enter your credit card details here."},"invalid_number":{"instruction_type":"error","instruction_message":"The card number is not a valid credit card number."},"invalid_expiry_month":{"instruction_type":"error","instruction_message":"The card's expiration month is invalid."},"invalid_expiry_year":{"instruction_type":"error","instruction_message":"The card's expiration year is invalid."},"invalid_cvc":{"instruction_type":"error","instruction_message":"The card's security code is invalid."},"incorrect_number":{"instruction_type":"error","instruction_message":"The card number is incorrect."},"incomplete_number":{"instruction_type":"error","instruction_message":"The card number is incomplete."},"incomplete_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incomplete."},"incomplete_expiry":{"instruction_type":"error","instruction_message":"The card's expiration date is incomplete."},"incomplete_zip":{"instruction_type":"error","instruction_message":"The card's zip code is incomplete."},"expired_card":{"instruction_type":"error","instruction_message":"The card has expired."},"incorrect_cvc":{"instruction_type":"error","instruction_message":"The card's security code is incorrect."},"incorrect_zip":{"instruction_type":"error","instruction_message":"The card's zip code failed validation."},"invalid_expiry_year_past":{"instruction_type":"error","instruction_message":"The card's expiration year is in the past"},"card_declined":{"instruction_type":"error","instruction_message":"The card was declined."},"missing":{"instruction_type":"error","instruction_message":"There is no card on a customer that is being charged."},"processing_error":{"instruction_type":"error","instruction_message":"An error occurred while processing the card."},"invalid_request_error":{"instruction_type":"error","instruction_message":"Unable to process this payment, please try again or use alternative method."},"invalid_sofort_country":{"instruction_type":"error","instruction_message":"The billing country is not accepted by SOFORT. Please try another country."}}}},"fetched_oembed_html":false}
{"date_format":"Y\/m\/d","time_format":"H:i","wordpress_permalink_only":"https:\/\/bonniehuval.com\/articles-and-essays\/technology\/choose-the-right-programming-language\/","all_default_visual_states":"inherit","modal_visual_state":false,"user_is_logged_in":false,"stripe_api_key":"pk_live_519vjE3HhU5m2IX7D6TDyZL7m2F5hu8GsJ5FSMdz5lokbMXEWqc2k7CHmCS7TiMfX1Wt7ZwAJ12HozPb9YoWA65iO00HwDOJx7Z","stripe_account_country_code":"US","setup_link":"https:\/\/bonniehuval.com\/wp-admin\/admin.php?page=tip-jar-wp&mpwpadmin1=welcome&mpwpadmin_lightbox=do_wizard_health_check","close_button_url":"https:\/\/bonniehuval.com\/wp-content\/plugins\/tip-jar-wp\/\/assets\/images\/closebtn.png"}