Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.

pedromcm.pm

macrumors 6502
Original poster
Mar 23, 2014
483
0
Porto, Portugal
Hi,

I'm a mechanical engineering student. During the last few years I've become fascinated by computers and even had to learn a few basic languages, but I think that it is time to seriously do something about it.

I used Matlab and Visual Studio (visual basic) in classes. It wasn't much, and I was very disappointed and demotivated. I thought I was going to design my first operation system in the first class, not toying with useless algebra operations during 6 months. :D

On my free time, I logged in to codeacademy and tried some stuff. Most languages seem a bit similar and looks like once you go for it you can learn it just like I learned other languages during my education. I'm Portuguese, BTW.

I have almost 0 experience, but I find the whole iOS (and Android, but iOS mostly) so fantastic, and also OSX. I want to be able to create my apps, learn how things work, etc. Mastering a program language and being able to create an app can be very valuable for my CV and set me apart from the others. And who knows, maybe I can be really good and create something that I can be proud of, right? Even If I suck at it, I will still "learn" and "know" something. That's the ultimate goal, improve.

So I believe that C, C++ are the way to go, right? What do you guys advice? I already downloaded the most interesting iTunes U courses, but those are some of the requirements.

I spared money for the necessary books. Not only that, this is a challenge for me. I want to "learn" to "learn".

So, can someone in a similar situation share their opinion and give some advice? Some old school programmer around here? How about young prodigies?

Thanks.
:apple:
 
Programming on OSX

I can only speak for myself.
After many years of C (++) and Visual Studio,
I found my place in JAVA + Eclipse.
Everything free and much faster than I thought.
Especially the Posix library for JAVA makes it possible
to do "almost everything" I want.
But, let yourself be assisted by the JAVA Forums on the Internet.
A good book is not enough.
;JOOP!
 
I also wanted to create some great applications as well, especially for the mac since it always seemed to be a great platform. If you want to make apps for the mac and iOS, I'd recommend you to start with Objective-C in the first place. After grasping the basics of object-oriented languages, learning new OO-languages will be a lot easier for you.
Your first goal should be to understand the crucial basics of object-oriented languages, you must be familiar with terms like instance, object, method, etc. and keywords and its meaning and structures (if, else, break, continue, while, do, etc.). To grasp these foundation, books can support you a lot. I recommend Stephen G. Kochans "Programming in Objective-C", it is a great start.
 
Eclipse is garbage.

If you want a Java IDE, use IntelliJ. I've never once heard from anyone who has used both and picked Eclipse for their own personal use. I have heard from people who use Eclipse just because that's what everyone else on their team uses. They find it easier to do what other people do than to try being an agent of change within the organization.

I work at IBM, the company that made Eclipse. I've already gotten everyone on my team off of Notepad++ and onto Sublime in less than a month. I'm working on getting everyone off of Eclipse and onto IntelliJ - I expect this will take a bit longer given how much bigger a change changing IDEs is than changing text editors. After that I need to explain to them what a sprint is and how what they call sprints are definitely not sprints.
 
Thanks!

To program in OSX and iOS (make apps) you HAVE to start with objective C, etc., right? Isn't JAVA irrelevant for the matter?

Besides, I was thinking about using xCode. It has so many documentation, looks great, is made by Apple and when I tried to study from an book, they had examples made on xCode.

Thanks LinusR (Aren't you torvalds? :D) for your advice. Staring is always the hardest part, especially when everybody is trying to catch people like me (selling tutorials, every possible book, servers if you want to make an website, etc.). You said you WANTED to create some great apps. What happened?

Sander, I already opened those tabs and I'm going to take a look. Don't take it personally, but I'm going to investigate a lot before choosing. The semester will end in 1 to 2 months. I will use that time to prepare myself and investigate the better way to "tackle" this challenge.
 
To program in OSX and iOS (make apps) you HAVE to start with objective C, etc., right? Isn't JAVA irrelevant for the matter?

Yes - I merely brought up IntelliJ to try freeing a few souls from the dark grasp of Eclipse.

Just a few notes on capitalization: Java is a proper noun but shouldn't be written in all capitals, while Xcode has a capital X and a lowercase c.

The best suggestion is always to imagine an app you want to make first, then tell us about it and we'll tell you the technologies that we've found are best suited to making a project like the one you've described. If you want to make apps that run on OSX and iOS, C and Obj-C are good languages to learn and Xcode is a good IDE (although note that AppCode also exists - I haven't tried it yet but I've been meaning to give it a shot since it comes from the same company that makes IntelliJ). If the apps you want to make aren't just generic apps, but games in particular, I'd recommend you learn Unity instead. In contrast to Obj-C which limits you to OSX and iOS, Unity can publish to iOS, OSX, Android, Wii U, PS3, PSP, Xbox 360, Windows, Linux, the web, on and on, but is built entirely around making games, so wouldn't be a good choice if you wanted to make an ordinary app.
 
I think you should look over what is/are the main langauge(s) for your career field. Look at open source and maybe private apps used commonly to see what they code in.


This would give you a basis for where to start. I for example have a biology background with some basis in bioinformatics. And currently I am looking at data science via an intro class sequence through coursera. Based on this language selection narrows down to say perl, python and R for me.

Not saying c (variants) can't help here but other langauges have more readlily available support for my interests.

But thats me and my needs. You could see what you need from trends in mechanical engineering applications.

What you would look for, in my opinion, is languages module support as it were. In my case there are several "bio" projects that drop in.


And as you have already seen....ide/text editors always good for making a thread lively, to put it nicely. My advice here is try out a few and see for yourself. I for example code mainly in bbedit. this could start a text editor holy war as at some point a VI(M) user may try to convert me to their side lol.
 
There have been several threads like this in the past - the consensus in there (after the holy language wars had died down a bit) it that you should try not to get side-tracked on a quest for the perfect IDE. That's secondary. Learn the basics first - all you need is a text editor and a compiler, really.
 
Still that junk? I don't believe that people stil recommend primitive coding without ide.

We're not suggesting you do your coding without an IDE. We're suggesting you learn without one. You should either use a learning environment (like DrRacket provides) or a command line + text editor when you're just learning the basics.
 
So...

So, for my goals (learn to make iOS and Mac apps):

  1. Objective-C is the way to go, first;
  2. I should use a nice IDE and take a look at the documentaion and support available, like Xcode;
  3. A great book is essential, but it's just the first step;
  4. Learning never ends, I will only be good if I keep learning, advance and challenge myself.

Is that it?

I know it's very different, but I will try and learn to create webpages, too. It's funny how opinions are always colliding, be it on:

- Choice of operating system;
- Choice of IDE;
- Choice of language.

We guys are all the same. :)
 
For iOS I recommend Objective-C, Xcode and this book.

For Mac applications you have to change some thing as CocoaTouch differs in some parts from Cocoa, but after the book you should be able to get that from the Apple documentation.

For web you need html and css. Next step would be JavaScript and PHP.
 
"Whatever gets you coding, and enjoying it" is the right answer. :)

I think the most important thing for any beginner is that they don't get too frustrated and give up too soon. The more you code, the more you see how to break down big problems into smaller ones, and smaller problems into individual bits which you've done before - and then it all becomes easy.

Whatever language/IDE/platform you choose now, you won't be using in a few years time anyhow so don't get too hung up about the choice.

Personally, I don't think Xcode is the easiest IDE to use, and it can be harder to find errors/omissions in the Interface Builder part than it would be in code, but it's a very powerful and polished IDE, and (IMO) iOS development is very rewarding. There's also the added benefit that it's now a very widely used toolset/framework so there's a huge support community - that's important.

Personally, I started off making a media manager app (like iTunes) as it gave me a target to work towards, and it involved a wide skillset. How to code up windows, lists views and buttons. How to display a video and control it. How to find files on the hard disk. How to read/save preferences. How to organise the library data, and read/save to/from disk etc. In my experience that's a lot more useful than picking chapters at random from a book to figure out what you need to learn.
 
We're not suggesting you do your coding without an IDE. We're suggesting you learn without one. You should either use a learning environment (like DrRacket provides) or a command line + text editor when you're just learning the basics.

This basically. If you at first do it the hard way of editor to cli compilation/running you have a basis to then judge quality of an IDE. I have come across IDE's that I felt I was jsut better off doing it the hard way tbh.
 
This basically. If you at first do it the hard way of editor to cli compilation/running you have a basis to then judge quality of an IDE. I have come across IDE's that I felt I was jsut better off doing it the hard way tbh.

But is that really "the hard way"? Especially for the OP who says he's a "mechanical engineering student", I would assume that a simple "hello world", typed in a text editor, and compiled on the command line, is actually simpler. For some people, following a "comic book style" tutorial with screenshot after screenshot ("forget about what all these checkboxes mean, just click NEXT") could be frustrating. It suggests that programming is "magic", and it's not.

I can appreciate that someone calls this opinion "junk". If all you want is your 3D game app to be up & running as quickly as possible, then go ahead and skip all this. It'd take years if you'd take the "step by step" approach in this case.
 
Still that junk? I don't believe that people stil recommend primitive coding without ide.

One doesn't really know a programming language well unless one can code in it without an IDE to hold ones hand.

e.g. if you can read code in a textbook on an advanced CS topic and understand it, the you can read code in a text edit window, on a dumb terminal, or even off of a stack of punched cards.
 
One doesn't really know a programming language well unless one can code in it without an IDE to hold ones hand.

What has usage of an IDE to do with knowledge of the language? Nothing.


e.g. if you can read code in a textbook on an advanced CS topic and understand it, the you can read code in a text edit window, on a dumb terminal, or even off of a stack of punched cards.

And how is that different from reading the same code in an IDE? It's the same code in both cases.

I have the feeling many think IDEs do things they don't do at all - Most of their working is removing the Makefile junk from coding. And help with editing tasks like a very advanced editor. There is no magic there.
 
IDEs help with making programs, yes, but they can also add boilerplate code that a novice might not understand. Autocomplete can make beginners rely on it too much.

Most programming courses that I've used started out with command-line applications before getting to GUI apps, and for many CLI apps an IDE is overkill. This is especially true for one-source code projects.

That said, I usually use Xcode on projects, usually when I need to debug something.
 
I have the feeling many think IDEs do things they don't do at all - Most of their working is removing the Makefile junk from coding. And help with editing tasks like a very advanced editor. There is no magic there.

The issue is that students tend to think IDEs are doing something special. They think that the source file they're typing up in an IDE is somehow something other than ordinary text.
 
Most of their working is removing the Makefile junk from coding. And help with editing tasks like a very advanced editor. There is no magic there.

A sufficiently advanced makefile (e.g. one for which a programmer has no clue how to read, create, or even know what basic steps are required to build and run the result) is indistinguishable from magic.

Power is the knowledge of what each necessary step in a magic incantation does. Then it becomes mere technology, which can be built upon, or creatively combined with other techniques.
 
Still that junk? I don't believe that people stil recommend primitive coding without ide.

I do my FPGA design in Emacs instead of Xilinix.

Many IDEs are just crap and are doing little more than code hinting and managing the build process for a good chunk of the time. Learning a build system was much more helpful than getting competent in an IDE. The only reason why I use visual studio at my job is for ReSharper. Otherwise I would be doing my Unity dev in Emacs in C# mode.

God, I don't even want to use Unity. It seems to crash every other save.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.