This week's book giveaway is in the General Computing forum.
We're giving away four copies of Emmy in the Key of Code and have Aimee Lucido on-line!
See this thread for details.
Win a copy of Emmy in the Key of Code this week in the General Computing forum!

daniel keshishian

Greenhorn
+ Follow
since Aug 01, 2012
Cows and Likes
Cows
Total received
0
In last 30 days
0
Total given
0
Likes
Total received
1
Received in last 30 days
0
Total given
9
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by daniel keshishian

Stevens Miller wrote:I would hope daniel has enough info now to proceed. Both Java and C++ are current, popular, and powerful. Because it is a managed language, I suggest he start with Java. Because it is a managed language, I suggest he not stop with Java (you can have my char* type when you can pry the mouse out of my cold, dead hand ). But, fergawdsake man! Pick one, and join in on the fun!



Damn right I do. This thread rules. Thanks everyone for your input.
7 years ago
Steve, brilliant analogy. Stick your neck out as much as you'd like. This thread is gold for me and I'm not in the least bit sensitive. Here's what my friend sent me after I told him that everyone is telling me to go with Java or Pyton over C. I think I might have misquoted him before.

Python's not a bad choice. I'm suggesting C because it'll force you to learn the basics. From C you can learn almost any other language. That said, Java is easier simply because you don't have to worry about your own memory management. When your program uses something like a number or a string you have to pay for it with memory. Java will give you memory and clean it up when you're done with it. C forces you to do all of that work yourself.
If you need the number 5 you're going to use 4 bytes of space (4 bytes == 32bits == 32 1s and 0s). So let's say your computer has 2GB of memory then you've just used .000000186265% of your available memory where 100.00% is your total memory.
In java you can allocate that number and pass it around without worrying about the physical memory behind it - the runtime system will ensure that the memory is available when you need it. And when you're done with it the runtime system will clean it up so something else can use it.
In C you can allocate that number and use it within your current context just like you would in java. But if you want to pass it around you have to give thought to what will happen to the physical memory behind it. Depending on how you allocated it and want to pass it, different things can happen. This is why C is difficult.



What do you guys think about this?

I appreciate my friends intentions here, saying if I learn C it will make the next languages easier to learn. It's strange. I may just be acting stubborn, but I don't really want programs completing stuff for me. I want to know what those programs are doing. I know that I may be getting caught up in the minutia and wasting my time. Pat made a beautiful analogy before about using an IDE vs notepad that really hit home. Thanks for that by the way, Pat.

Would you folks agree that it's easier to go from C to Java, than vice versa? Eventually, I want to learn several languages and I'd like to hear your opinions about transitioning from one to another.
7 years ago

Pat Farrell wrote:Yes, I would start with Java.
And while the college where I teach Java 101 classes uses a very simple (near trivial) ide, I strongly prefer to teach using Netbeans.

With Netbeans, you can download the full bundle with everything in it, and install it. Once you do, everything is setup, all the obscure
classpath variables, etc. are done automagically for you. No need to learn configuration stuff.

Then just type in the code you want, and press the RUN button.

I find that for real novices, you have to have a decent debugger, so you can step into code and look at variables. You can't do that when
you use something like notepad and the command line compiler.



Bah! Why did my friend have to recommend starting with C. I'm so conflicted...

Pat, you don't think that I'd be missing some key elements by jumping right into an IDE? Reading what you wrote about the obscurities that coincide with using notepad, I am more intidmiated going the notepad route, but I felt as though I should learn from the bare bones up. You don't think I'd be missing some key elements by jumping right into an IDE? Greg also agrees that I could jump right into an IDE. I feel he's right in that I could learn the fundamental details as I'm picking up on the other stuff. This seems logical to me.

7 years ago
This is a great thread, thanks to all!

Greg, yeah, it is hard to cater to one level at all times. It seems that you guys strongly recommend Java over C. I wish we were all in a room together, with my friend, and we could have a discussion about the whys and why nots. This stuff is interesting.

7 years ago

Stevens Miller wrote:If the choice is between Java or C, I suggest Java. I love C and prefer it for a lot of things (anything involving a lot of unsigned integer data, for example, such as graphics work). But the comments here are accurate: C supplies you with a long list of ways to hurt yourself, often spectacularly and simultaneously inscrutably.

Also, this forum is a jewel for a beginner. A lot of forums "welcome" beginners by answering their questions with replies like, "Why would you even ask that? Your question says you don't know enough to be asking a question like that. There used to be an answer to your question on the Web, but I never knew where it was. Go find it yourself. You also posted your question in the wrong forum. People like you really piss me off. Hope that helps." This place is more cordial.

Heh. Never thought I'd be promoting Java over C, for anything. I've done some stuff in each of BASIC, Fortran IV, Pascal, APL, RPG II, Visual Basic, C/C++, Java, and a variety of assemblers. While a clever person once said that, "A dedicated programmer can write Fortran programs in any language," I do think Java encourages some good techniques, and allows for a lot of versatility, while still providing some useful safety nets.

Whichever one you choose, hang onto your seat: you're in for a ride.



I am pleasantly surprised at how nice people are on here. I am surprised I haven't received any awesome messages similar to what you said above. I have thick skin anyway. Internet tough guys don't really affect my day anyway.

I did start to realize that when I was asking about C, I am asking it in a Java section. I mistakenly assumed that programmers know all the languages. It's these little things that I'm still wrapping my head around.

I suggest you start with C (not C++). You can create some pretty cool stuff right out of the gate and you'll learn a lot that can be transfered to other languages. I started with Java and got stuck not knowing how to manage memory usage. I wish I started with C.



This is the synopsis of what my friend said.
7 years ago

Greg Charles wrote:Inch bes es! *

* I'm part Armenian.



I'm part also, as I'm American, which naturally means I'm a mutt.

Interestingly, Python seems to be the common recommendation for beginners. But, I'd prefer to learn Java or C first. Maybe I'm just stubborn.

Jk Robbins wrote: The recommendation for taking a basic programming course at the local community college is a good one. Learning about looping, decision making, data structures, and collections is applicable to any language.



I understand the intention, but I am going to give this a shot on my own first.
7 years ago

Stevens Miller wrote:

But on the net, people can't see you wink, and there is a serious risk they will actually believe you if you say that sort of thing.


Heh. Sonny, I know. I built the internet. Well, okay, I know some people who built the internet. I even met Gene Spafford, once.

Gotta push the envelope, now and then, just to see where it is.

Regarding programming for a pure noob, I'd seriously consider taking a course, maybe at a community college or something like that. Learning a new language is one thing, but learning to program in the first instance is quite another. I think Java is probably not the easiest language to learn for a first choice, but the others are probably not worth the time it would take to transfer your skills, and any of the "toy" languages designed to make learning programming easy just aren't going to be useful for anything past learning.

Thing is, in the age of the Web, a lot of problems I would have sought help on by asking a friend or colleague are now things I can get help on via Google. But, even that is an acquired skill. I well remember some late nights, back in the '70s, when a machine called the IBM 1130 steadfastly refused to compile my deck, I had no idea why, and how frustrating it was to be left with no one to ask and no place to go for an answer. You can learn to program out of a book, with no help from anyone, but I expect it would be easier, faster, and a heck of a lot more fun with some company.

That said, there are a lot of options for "Intro Java" classes in the world. I'd suggest a person (of any age) consider one of those, if they've never written a program before.



Steve, sound advice. Given that I'm short on money right now, I am going to see what I can handle on my own. I generally learn quickly and am able to teach myself stuff. I think I might just need to be a bit more patient with this, because everything is just going to be so new.

Right now, I'm just trying to decide between C or Java as a starting language.

7 years ago
Thanks to everyone who replied to this thread! It feels great knowing there are good people out there willing to help a newbie.

My question of the day is: should I start with Java or C? As I mentioned to Greg, I had a buddy who strongly recommended I start with C, because of its transferrable nature.

If I am going to start with Java, I'm going to purchase Head First Java. If I'm going to start with C, I have a few resources at the ready, but more would be welcomed. I'd like to hear your reasoning for recommending I learn one over the other. And, would you be so kind as to recommend the tools I'll need to get started. I may already understand what I need, but having it repeated is good practice.

7 years ago

Greg Brannon wrote:

When you said IDE will hide some important fundamental details, were you referring the some of the auto-fill in code? I noticed that when I tried copying some code, it had some auto-filler come up - I wasn't thrilled with this, I don't want help yet. I want to know everything that I'm doing.

Can you distinguish the difference between learning the language and learning an IDE? My perception of that statement is: learning what the lines of code actually mean, i.e.

println.blahblah.("Hello World") "

^ Is that what you mean by actually learning the language? If so, that's where I've wanted to start. The IDE is where I actually write the code after learning the language.

Gosh, I feel overwhelmed, and I'm hoping that at 25 it's not too late to start...


Good response. I'll address your later questions and comments repeated above:

Fundamental details: Getting the development environment setup can be a real challenge for some. Challenges include: getting the JDK installed, setting the CLASSPATH or other helpful/necessary environment variables, compiling and running code from the command line, understanding use of the java/javac commands, managing source and compiled file locations and folders, resolving dependencies, etc. An IDE will often hide these details - sometimes complicate them - so that a program may compile and run fine in the IDE but will not from the OS command line. Some learning points are demonstrated from the command line. Can one start with an IDE, completely ignorant of these challenges, and learn them later? Sure. Any worse for the experience? I don't think so but others may.

Auto fill-in, code completion, syntax checking, source code templates, auto import management, source code formatting, etc. are all standard IDE features, that should be configurable, that may cause someone new to programming to miss learning fundamental skills and processes that will be revealed later in unpleasant ways. The scenario goes something like: learned to program using an IDE with all of those fancy features, goes on a job interview and is handed Notepad++ and is asked to write, compile, and run a relatively simple program and doesn't have the slightest idea where to start. Okay, that may be an extreme example, but not impossible. At some point, take the time to learn how to do all of that stuff correctly most of the time without the IDE crutch.

Learning the language versus learning the IDE: You already know how to use a basic text editor, create a new file or load an existing one, edit it, save it, etc. You can use that basic text editing knowledge you already have to start learning Java (or any language with .txt-based source code) right now, and you'll be learning the programming language, not how to use the editor. Replace the basic text editor with a piece of software called an IDE, and you'll not only be learning Java, but you'll be learning the IDE, and when something's not working the way you expect it to, you won't be sure if it's the program or the IDE that's causing the malfunction. Plus there's there's the "just getting started" part of creating the source code, compiling it, running it, seeing the results, etc. in an IDE that you will have to learn. Is it a big deal to start out learning both at the same time? For some, perhaps. For others, probably not. I disagree somewhat with your comment, "The IDE is where I actually write the code after learning the language." You will always be learning something about whatever language you choose to start with, even while using an IDE. You shouldn't think of the process as using one tool to learn the language, the learning's all done, and then you'll swith to another tool to actually "use" the language. You'll always be learning, no matter which editing tool you're using. Some will assert that you'll learn the programming fundamentals faster without an IDE in the way, but I don't know if there's scientific evidence to support that. Most beginning programming college courses that I've been able to survey on the web start with an IDE, though some instructors require the use of a "crippled" IDE for tests. Again, a non-scientific survey, just my observation.

That you feel somewhat overwhelmed is probably a good thing. It indicates that you recognize the challenges ahead. It's facing those challenges head-on, well armed with the right resources and tools, and an open mind to learn from the experiences gained by both succeeding and failing that will build your skills and confidence to continue on to and through the next challenge and to the next . . . And if you're motivated to learn, 25 is not too late to start.

Wish you the best and come back anytime and often for help.



Greg, thanks so much for your detailed response.

Do you think I should start with Java? I chatted with a friend who's been programming for quite some time, and he recommended I start with C because of its transferrable nature. What are your opinions on this?

Aside from how much content there is, I was feeling party overwhelmed because I couldn't seem to find a good starting point. I would start some tutorial, then realize that the tutorial assumed I had some prior programming knowledge, then I'd abandon that source. I love challenges, and look forward to them, but I like to feel organized in my approach to something. I dislike jumping around - starting one thing, then moving to another before completing the previous thing.

As for the Notepad++ vs. an IDE, I think I'd feel more comfortable starting with Notepad++. I prefer the bare bones approach.

I have no lack of motivation. I am sort of between jobs right now with plenty of time on my hands to learn programming. I know it's not something I'll learn overnight (meaning, I understand I won't be looking for a job in programming next week), but when I become addicted to something, I learn quickly. I want to become addicted to programming. I want to be faced with challenges, overcome them, and see my results.

So today, I plan to go buy a book on either Java or C. What do you think, Greg?
7 years ago

Greg Brannon wrote:You should check out the Java Beginner's FAQ.

Many here recommend the Head First Java book, and I've read many glowing comments about it and some others (few) not as strong, but that's to be expected. Learning styles and what works for each person vary widely.

Some will suggest (strongly) to not use NetBeans or other high-performing IDEs (programmer's editors) to begin your learning adventure. Learning the language and the IDE at the same time can become a discouraging experience for some, and the IDE will hide some important fundamental details. Frankly, if you're fairly computer literate, learning the IDE isn't that big of a challenge, and you can learn the fundamental details later.

I would not discourage you starting with Java, but some might. Many an article brags about how great Python is as a beginner's first language. I can't go back and do the first language thing over again, so I can't give a useful opinion, but it's something you might stay open to awhile longer.

Whatever you decide, best of luck, and come back when you have questions.



Greg, thanks for your response and good wishes. I've also read some things about Python. I've read it is the easiest to begin with, but I don't see its practicality. Maybe I should look into a bit more, because maybe it would familiarize myself with basic programming language?

I planned to learn Java, C#, C++ and other stuff that is good to know. These seem like the big 3 so far.

Head First Java seems like a good book, it has received some good reviews on here and Amazon. Maybe I'll start there instead of Java for Dummies.

I am computer literate. I've modded games before, obviously I didn't create the mod but I've manipulated files, which I think qualifies me as computer literate. When you said IDE will hide some important fundamental details, were you referring the some of the auto-fill in code? I noticed that when I tried copying some code, it had some auto-filler come up - I wasn't thrilled with this, I don't want help yet. I want to know everything that I'm doing.

Can you distinguish the difference between learning the language and learning an IDE? My perception of that statement is: learning what the lines of code actually mean, i.e.

println.blahblah.("Hello World") "

^ Is that what you mean by actually learning the language? If so, that's where I've wanted to start. The IDE is where I actually write the code after learning the language.

Gosh, I feel overwhelmed, and I'm hoping that at 25 it's not too late to start...

7 years ago
Hi all,

I am anxious to dive into programming, having never programmed before.

I've always loved video games and everything about them. I've always wanted to design them, but felt it impossible.

Well, that line of thinking is done! Time to jump into programming, the only problem is... I have no idea where to begin. I have been anxiously searching the internet for Java tutorials but most seem to assume some experience with programming.

I've done the copy/paste of HelloWorld but I hated the oracle tutorial with it. It made assumptions that I knew what I was doing, and didn't really explain what was going on. I've looked for books online but am bogged down by how many suggestions there are.

I am looking for any resource regarding Java programming for someone with NO programming experience whatsoever. I'm using a Mac with Lion 10.7, if that makes any difference in your recommendations. I have already downloaded NetBeans (to write code???) and on my Terminal that came with my Mac, I seem to have a java compiler because in the terminal I typed 'javac' and a bunch of stuff came up - meaning I have a java compiler? Do I need anything else here?

Thanks in advance!

EDIT: I think I'll start with Java for Dummies. This seems to be the goto resource for people with absolutely no programming experience. Thoughts?

EDIT 2: Some have recommended that I start with C. Any thoughts here?
7 years ago