Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

How do programmers keep it all straight?

  1. May 30, 2017 #1
    You all might think it is a silly question, but I have the impression that one should be able to somehow know the entire string of commands, and so feel overwhelmed and defeated. I never really earned the basics, just eased into computer work while in the healthcare field and have been struggling ever since. There seems to be so much to learn then more added so I switch and get very confused about even where all my files are.
    Don't really have another question. Thanks if anyone feels like commenting.
     
  2. jcsd
  3. May 30, 2017 #2

    Stephen Tashi

    User Avatar
    Science Advisor

    Are you talking about writing computer programs in a programming language such as Java? - or are you talking about using an interactive environment such as a "shell" and typing commands in a terminal window?
     
  4. May 30, 2017 #3

    symbolipoint

    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    Coursework! Long ago in the old days when computers were for "smart" people and the technology was far less advanced, students could learn Computer Programming, in whatever languages were available for this included in the course, at their local institution - whether community college, university, or high school. Students did not learn everything all at once. Students were taught to make table of variables or data, draw and label flow-diagrams, and translate the flow diagrams into computer language code.
     
  5. May 31, 2017 #4
    Long ago there was less to know. Fewer machine architectures, instructions, commands, languages, interfaces, etc.. Learn fundamentals well, be selective about which sets of specifics you learn in depth, and be ready to read the manuals and code. Set up safe test environments. Try things out.
     
  6. May 31, 2017 #5

    jedishrfu

    Staff: Mentor

    I often use the internet to find some code that matches what I'm trying to do and then extract out what I need. Some of my work involves coding in Java then switching to Python or Matlab and back so its useful to have programming examples and old code on hand to see how I did it in the past and if not the search the internet.

    Also modern languages like Java demand that programmers use an IDE like Eclipse, Netbeans or Intellij. These tools can look up Java apis, prettify your code and help your refactor it as needed. Before the advent of these tools, it was quite cumbersome to even change a variable name everywhere correctly or refactor code. So if you're not using them you should look into it for a productivity boost.

    Its quite true that over the years programming languages have grown in features and in library support api. When I learned Fortran IV, the manual was like 50-60 pgs and 30 or so statements and conventions with pretty much everything in it. Later other programmers added third party libraries that you could incorporate into your code the most notable being the IMSL numerical computing library.

    As newer languages are developed they have to incorporate the popular library apis of older languages into their code base in order to compete for programmers. We see this in Java today which arguably has everything including the kitchen sink in its api set making learning it fully an improbable task. Programming book authors often don't know the whole language (that's often why they wrote the book) but instead research the api, write about it and go on to something else. Later they can use their own book to remember the more arcane parts. One famous author I knew did this and it amazed me how little he knew what he was writing about. He made a lot of money on it too. So I guess money trumps knowing.

    Anyway there are a couple of cookbooks for Java, for Python and several other languages that are good for finding specific tasks like sorting data or date time display and numerous other things.

    https://www.amazon.com/Java-Cookboo...&qid=1496233067&sr=8-1&keywords=java+cookbook
     
  7. May 31, 2017 #6

    FactChecker

    User Avatar
    Science Advisor
    Gold Member

    I keep notes of commands and code facts that I need often. Long ago, I had to switch often between computers with different systems (VAX, IBM, PC Windows, Unix, Unix-like) with completely different commands and tools. I had a pocket-sized notepad for each one and I would carry the one that I needed that day. Even now that I stay on one system, I have a file of notes.

    PS. Also, Google helps a lot.
     
  8. May 31, 2017 #7
    I use a ticket system called Jira, but any ticketing system should allow you to track your bugs and tasks. Sourceforge has a nice free once and I think trac has a free version.

    You should place all of your code files into a version control repository. It not only allows you to track your changes, but check out the same piece of code and edit it no matter what computer you are on.

    As for languages, no, we don't know all of the functions and their parameters. I tend not to remember things unless I know that I wont have access to them later. I can google any function that I need to know about, and most of the time, the IDE will show me a function's parameters if I start typing it.
     
  9. Jun 1, 2017 #8

    rbelli1

    User Avatar
    Gold Member

    Also if you don't know exactly what you need you can type in various words that match the task at hand. If you are lucky there is already something in the API to use and it will pop up for you.

    So much easier than a dumb text editor and a stack of books where search means flipping pages.

    BoB
     
  10. Jun 4, 2017 #9
    Learning the theory of coding is as important as having a big tool set. Start with the basics. Whenever you need a command you haven't learned, use the help/man function or a search engine online. DuckDuckGo returns stackoverflow whenever it suspects a programming inquiry which is most helpful. As with anything, practice and then practice more.
     
  11. Jun 4, 2017 #10

    jim hardy

    User Avatar
    Science Advisor
    Gold Member
    2016 Award

  12. Jun 4, 2017 #11
    Even the most experienced programmers have reference books they use. Take time to learn the basics :) Once you have the core programming concepts down you can apply them to any language and the rest is just learning syntax.
     
  13. Jun 4, 2017 #12

    rbelli1

    User Avatar
    Gold Member

    This is very true when the core is stable. Learning a new programming language is more like learning a different dialect rather than a whole new language.

    But from time to time there are additions to that core. If you switch to a language that has adopted these new concepts as requirements but your preferred language has not you have two learning curves to climb.

    BoB
     
  14. Jun 4, 2017 #13

    symbolipoint

    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    That's what so many programmers keep saying. Not true for me.
     
  15. Jun 4, 2017 #14

    symbolipoint

    User Avatar
    Homework Helper
    Education Advisor
    Gold Member

    To keep in line with what O.P. wants, how would a person today begin learning computer programming and data processing? Many decades ago, one would be able to enroll in a couple of beginning computer science courses and learn programming. This could have been done through a community college and at the time, no Window operating system yet. Students would learn BASIC, Cobol, or Fortran, or any/ or all of them. Things changed? Right? No?
     
  16. Jun 4, 2017 #15
    Step 1: Figure out what programming you want to do.
    Step 2: Find out which is the most popular language for that task. It may not be the best language, but with more users, the better chance you have a query answered.
    Step 3: Make a stackoverflow, github, and some type of online education site. I personally use edX. They have a lot of free programming courses. I am not a Microsoft guy, but the Microsoft courses have been very beneficial and easy to follow.
    Step 3.5: If you want to do Data Analystics go ahead and make a kaggle account as well.
    Step 3 Alternative: Buy a programming textbook or find a free one. https://en.wikibooks.org/wiki/Main_Page and https://openlibrary.org/ have plenty of programming texts. DuckDuckGo search will yield some books as well.
    Step 4: Find/make friends that are also interested in learning programming. They will help keep you motivated and lots of troubleshooting time can be avoided by someone else intervening.
    Step 5: Start writing programs. The beginning is the hardest. Don't get frustrated if your first programs have many errors. That is natural.
    Step 6: Find something you want to program. Knowing how to program is no good if you have nothing to program!

    Edit: Step 5.5: Learn to read man and help pages and documentation effectively!! Teaching yourself is better than having to rely on forums.
     
    Last edited: Jun 4, 2017
  17. Jun 5, 2017 #16

    jtbell

    User Avatar

    Staff: Mentor

    I did a Google search for "cs1 programming language survey". The most recent hit on the first page is a 2014 blog post from the Communications of the ACM:

    Python is Now the Most Popular Introductory Teaching Language at Top U.S. Universities

    Java is a close second. Of course, this doesn't include more run-of-the-mill universities, colleges and community colleges.

    As a single obsolete data point, I taught intro programming using C++ until about 2002. During the late '90s and early '00s, C++ was very common for this because it was the language used in high school AP computer science courses in the US. Then that course switched to Java in 2003. The professor who took over our intro programming course from me, accordingly switched to Java also. I don't know what the prof who teaches the course now uses.
     
  18. Jun 5, 2017 #17
    It is definitely beneficial to see what university classes are being taught. It may be beneficial to check out Indeed/LinkedIn and find which languages employers are looking for as well.
     
  19. Jun 5, 2017 #18

    rbelli1

    User Avatar
    Gold Member

    If you start out with Python make sure you learn the basics and simple data structures first. Python with its rich set of libraries makes it easy to get into the flashy stuff too quickly. If your goal is to complete a task easily then that is actually a good thing. If you want to learn programming well then understanding the foundation first is the way to go.

    Documentation is scant on some of the Python libraries so if you have trouble wading into some of the heavier weight ones don't be discouraged. It might not be your fault.

    A feature of Python that makes it easier to learn than many others is the console. You can execute commands interactively and get instant feedback.

    BoB
     
  20. Jun 5, 2017 #19
  21. Jun 5, 2017 #20

    rcgldr

    User Avatar
    Homework Helper

    No Windows, but you did have mainframes and mini computers with multi-tasking operating systems. As for decades old programming languages: RPG (report generator), somewhat of a software replacement for plug board programming. PL/1 - advanced but not that popular. APL (A Programming Language), dating back to the early 1960's, a very high level language where the operators work with variables with any number of dimensions.
     
    Last edited: Jun 5, 2017
Know someone interested in this topic? Share this thread via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted



Similar Discussions: How do programmers keep it all straight?
  1. How do programs work? (Replies: 5)

Loading...