MacBook Pro for programming

Pez_93

macrumors newbie
Original poster
Jul 9, 2019
5
0
Hi, today Apple has just updated the 13” MacBook Pro and I must choose what version of it should buy.
I'm studying computer science at university and I have to use the computer for programming (for example with Android Studio, Xcode, etc.).
Versions that I am considering are the following:

- i5 quad core 8th gen. 1.4GHz (up to 3.9GHz), Iris Plus Graphics 645, 16GB RAM, SSD 256GB
- i5 quad core 8th gen. 2.4GHz (up to 4.1GHz), Iris Plus Graphics 655, 16GB RAM, SSD 256GB

Which of these two should I take?
Should I also consider the 15”?
 

leman

macrumors G3
Oct 14, 2008
9,975
4,553
Why not MacBook Air? CPU performance and RAM doesn't matter much unless you intend to work with very large codebases and also run very large builds on your machine. For coding, what is important is the screen size, since you will work with text, lots of text. The 15" screen could be useful here. Or an external monitor.
 
  • Like
Reactions: deadworlds

Pez_93

macrumors newbie
Original poster
Jul 9, 2019
5
0
Why not MacBook Air? CPU performance and RAM doesn't matter much unless you intend to work with very large codebases and also run very large builds on your machine. For coding, what is important is the screen size, since you will work with text, lots of text. The 15" screen could be useful here. Or an external monitor.
I’d like to have the Touch Bar, so I must go with Pro.
 

AnotherSoftwareEngineer

macrumors newbie
Sep 9, 2018
26
33
Why not MacBook Air? CPU performance and RAM doesn't matter much unless you intend to work with very large codebases and also run very large builds on your machine
This is not good advice if you're planning to use Android Studio or Xcode. You can probably get along fine with a weaker system for frontend web dev stuff but that's about it.

I'd recommend getting the 2.4GHz 13" over the 1.4GHz.

The 15" will be a matter of preference on screen size and whether or not you want/need discrete graphics.
 
  • Like
Reactions: deadworlds

Pez_93

macrumors newbie
Original poster
Jul 9, 2019
5
0
This is not good advice if you're planning to use Android Studio or Xcode. You can probably get along fine with a weaker system for frontend web dev stuff but that's about it.

I'd recommend getting the 2.4GHz 13" over the 1.4GHz.

The 15" will be a matter of preference on screen size and whether or not you want/need discrete graphics.
Do you think that I need a discrete graphics for the use that I wrote?
 

leman

macrumors G3
Oct 14, 2008
9,975
4,553
This is not good advice if you're planning to use Android Studio or Xcode. You can probably get along fine with a weaker system for frontend web dev stuff but that's about it.

I'd recommend getting the 2.4GHz 13" over the 1.4GHz.
Sorry, but what is so special about Xcode or Android Studio that requires a sustain-oriented multi-core CPU? The Air CPU will operate at over 3Ghz most of the time, unless we are talking about builds that last multiple minutes, which is more than sufficient for an average programmer.
 

Stephen.R

macrumors 65816
Nov 2, 2018
1,378
908
Thailand
I would definitely avoid anything less than quad core CPU, and I'd be aiming for 16GB RAM as a minimum.

you are probably the first programmer I've seen that actually wants a Touch Bar.
-
I didn't buy a machine specifically for it, but when I use my MBP (it's a spare/travel machine) the Touch Bar is at least as useful as the F-Keys ever were in an IDE. In regular (i.e. non dev) usage it's definitely more usable than the physical fixed-purpose keys, IMO.
 
  • Like
Reactions: Zerosopher

AnotherSoftwareEngineer

macrumors newbie
Sep 9, 2018
26
33
Do you think that I need a discrete graphics for the use that I wrote?
Not unless you plan to hook it up to something like a 5K external monitor or play games.

The 5K is of course supported on just integrated graphics, but I imagine it could lag a bit at times.
 

Pez_93

macrumors newbie
Original poster
Jul 9, 2019
5
0
I see.
The 15” MacBook Pro 2017 base compared to the 13” MacBook Pro 2019 with i5 quad-core 2.4 GHz and 16GB RAM, is still more powerful even if it's two years ago?
 

pshufd

macrumors 65816
Oct 24, 2013
1,302
880
New Hampshire
You should probably ask around at the Computer Science department at your school. In general, schools provide computers for you to do your homework in labs and the professors have to understand that when issuing assignments. It is nice to have your own system to do assignments as the school labs can get busy but that may mean that you will need to run multiple operating systems on your own device. You may get assignments on Linux, Windows and macOS - but only if they have the operating systems available in their lab. If you do get assignments on Windows, then you'd need a Windows license for your MacBook. Your university might have an agreement with Microsoft to get free Windows licenses for Computer Science students - something to look into.

My son took several classes where assignments had to work and be submitted on a Linux server. So he could do the assignment on his MacBook Pro but he would have to upload his source code and ensure that it also ran on Linux; and then upload the source code and run results for homework.

In general, Computer Science assignments require very little in the way of compute power. You could use something ten years old that should work. Of course programming assignments using high-level tools may be different. But those are often programming/IT; not Computer Science. Some nearby disciplines like BioInformatics may require a fair amount of computing power - say doing Genomic Pipelines - but they should provide servers for that.

In general, you should not need a lot of horsepower for Computer Science. Computer Science is really math. I think that most Computer Science students don't understand that until their third or fourth year. The problem is that a lot of Computer Science programs are sold as learning to program.
 
  • Like
Reactions: deadworlds

deconstruct60

macrumors 604
Mar 10, 2009
7,979
1,172
Sorry, but what is so special about Xcode or Android Studio that requires a sustain-oriented multi-core CPU? The Air CPU will operate at over 3Ghz most of the time, unless we are talking about builds that last multiple minutes, which is more than sufficient for an average programmer.
Even on shorter builds having 4 instead of 2 cores can help if not very skillful at setting up dependencies right. ( I suppose having only two cores will teach that lesson faster. There seems to be a new crop of folks coming along who can find all kinds of ways to brute force through problems. )


However, it isn't just builds. Also can be an issue if running a VM along side the dev environment. Programming 101, 102 yeah there may not be much of a difference but an upper division class could have a "container" that holds the software configuration they want the class to use to do projects.

Two core Y-series versus 4 core makes a difference if going to host a second OS instance in part of the 16GB of RAM outlined. On a smaller system ( e.g. 8 GB) where may not have more than one OS instance running at time then the gap is smaller.

The Y-series is also a big step down in terms of GPU 'horsepower'. If plan on later doing exploration on GPGPU area then there is a gap there. A discrete GPU probably isn't 'necessary' but there is a big gap in the iGPU space.

The MBA costs less ( which hasn't been mentioned so far so perhaps not a constraint. ). If budget requires sacrificing SSD capacity for RAM then the lower base price of the MBA means could probably bump the SSD up to 512GB. ( again multiple OS instances will consume more storage capacity also. ). As a foundation to buy "more" with the same budget it does have merit here.

It is more of a balance evaluation that is probably more critical than just primarily CPU clock speed. Single stepping through a debugger to find what needs fixing, that specific factor isn't going to make much of a difference, and rookies are likely going spend a substantial amount of time doing just that.
 

pshufd

macrumors 65816
Oct 24, 2013
1,302
880
New Hampshire
Even on shorter builds having 4 instead of 2 cores can help if not very skillful at setting up dependencies right. ( I suppose having only two cores will teach that lesson faster. There seems to be a new crop of folks coming along who can find all kinds of ways to brute force through problems. )


However, it isn't just builds. Also can be an issue if running a VM along side the dev environment. Programming 101, 102 yeah there may not be much of a difference but an upper division class could have a "container" that holds the software configuration they want the class to use to do projects.

Two core Y-series versus 4 core makes a difference if going to host a second OS instance in part of the 16GB of RAM outlined. On a smaller system ( e.g. 8 GB) where may not have more than one OS instance running at time then the gap is smaller.

The Y-series is also a big step down in terms of GPU 'horsepower'. If plan on later doing exploration on GPGPU area then there is a gap there. A discrete GPU probably isn't 'necessary' but there is a big gap in the iGPU space.

The MBA costs less ( which hasn't been mentioned so far so perhaps not a constraint. ). If budget requires sacrificing SSD capacity for RAM then the lower base price of the MBA means could probably bump the SSD up to 512GB. ( again multiple OS instances will consume more storage capacity also. ). As a foundation to buy "more" with the same budget it does have merit here.

It is more of a balance evaluation that is probably more critical than just primarily CPU clock speed. Single stepping through a debugger to find what needs fixing, that specific factor isn't going to make much of a difference, and rookies are likely going spend a substantial amount of time doing just that.
I remember doing CS assignments on a 1 MB Mac+. At least I think it was 1 MB.

And programming on a PDP-11/45 with 28K of RAM. 20K for the Operating System and 8K for swapped user space. The modern student is spoiled.
 

deconstruct60

macrumors 604
Mar 10, 2009
7,979
1,172
Hi, today Apple has just updated the 13” MacBook Pro and I must choose what version of it should buy.
I'm studying computer science at university and I have to use the computer for programming (for example with Android Studio, Xcode, etc.).
Versions that I am considering are the following:

- i5 quad core 8th gen. 1.4GHz (up to 3.9GHz), Iris Plus Graphics 645, 16GB RAM, SSD 256GB
- i5 quad core 8th gen. 2.4GHz (up to 4.1GHz), Iris Plus Graphics 655, 16GB RAM, SSD 256GB

Which of these two should I take?
If both are in budget I'd say neither. ;-)
i5 quad core 8th gen. 1.4GHz (up to 3.9GHz), Iris Plus Graphics 645, 16GB RAM, SSD 512GB

But I'd caution against stretching budget to where doing some kind of rationalization that more money is an "investment" ( for what you are likely to do, it isn't. It is more money. If this is being financed by debt it probably won't pay off well. ).


Should I also consider the 15”?
For what Apple charges you'd be better off with an modest external 24" display unless you have some huge need to do most of your coding in the library ( or coffee shop or someplace mobile). The 15" is overkill for all but a few paths in course of study.
 

deconstruct60

macrumors 604
Mar 10, 2009
7,979
1,172
I remember doing CS assignments on a 1 MB Mac+. At least I think it was 1 MB.

And programming on a PDP-11/45 with 28K of RAM. 20K for the Operating System and 8K for swapped user space. The modern student is spoiled.
But those were the tools available at the time. With newer tools classes could do more. For example most networking classes tend to do 'low bandwidth' projects because can't have 40-50 students all using the same ethernet pipe coming off a single server ( can perhaps do 'local' pipes but wont see heterogeneous network stack effects there ). With Virtual Machines and Networking can give students their own 'playground' where the cross interfere is minimal.

I can remember doing OS homework on shared servers where fellow student set off "fork bombs" because got 'fork/exec" 'if then" set up backwards. Other folks helping folks in the lab out of the situation is a helpful learning experience also. The "lone ranger' coding track is a dual edge sword too.

I agree that the relatively super fast edit/compile/debug cycle can be more than abused these days. Where some students just keep changing the code until the answer happens to come out 'correctly'. However, if used right can scale up to 'bigger' projects practice one ( both in data set size and more complicated libraries to attach to their project). THe better CS departments have a balance of analysis (more math like) and practicum ( code skills ). And more multiple disciplinary stuff ( so perhaps also doing bigger stats , or touching the bioinformatics. )
 

pshufd

macrumors 65816
Oct 24, 2013
1,302
880
New Hampshire
But those were the tools available at the time. With newer tools classes could do more. For example most networking classes tend to do 'low bandwidth' projects because can't have 40-50 students all using the same ethernet pipe coming off a single server ( can perhaps do 'local' pipes but wont see heterogeneous network stack effects there ). With Virtual Machines and Networking can give students their own 'playground' where the cross interfere is minimal.

I can remember doing OS homework on shared servers where fellow student set off "fork bombs" because got 'fork/exec" 'if then" set up backwards. Other folks helping folks in the lab out of the situation is a helpful learning experience also. The "lone ranger' coding track is a dual edge sword too.

I agree that the relatively super fast edit/compile/debug cycle can be more than abused these days. Where some students just keep changing the code until the answer happens to come out 'correctly'. However, if used right can scale up to 'bigger' projects practice one ( both in data set size and more complicated libraries to attach to their project). THe better CS departments have a balance of analysis (more math like) and practicum ( code skills ). And more multiple disciplinary stuff ( so perhaps also doing bigger stats , or touching the bioinformatics. )
What does this have to do with Computer Science though? In theory, you don't need a computer at all.
 

Valdna

macrumors member
Jul 26, 2017
69
26
Hi, today Apple has just updated the 13” MacBook Pro and I must choose what version of it should buy.
I'm studying computer science at university and I have to use the computer for programming (for example with Android Studio, Xcode, etc.).
Versions that I am considering are the following:

- i5 quad core 8th gen. 1.4GHz (up to 3.9GHz), Iris Plus Graphics 645, 16GB RAM, SSD 256GB
- i5 quad core 8th gen. 2.4GHz (up to 4.1GHz), Iris Plus Graphics 655, 16GB RAM, SSD 256GB

Which of these two should I take?
Should I also consider the 15”?
For computer science classes even 8GB RAM is ok. So what if in some rare occasions you swap a little? SSD is fast enough for that. Just skip the facebook browsing while in the class :)

If you would work as an developer... then get the best you can afford :D
 

leman

macrumors G3
Oct 14, 2008
9,975
4,553
Even on shorter builds having 4 instead of 2 cores can help if not very skillful at setting up dependencies right. ( I suppose having only two cores will teach that lesson faster. There seems to be a new crop of folks coming along who can find all kinds of ways to brute force through problems. )
Sure, but then again the current Air is basically just as fast as the 2016 13" MBP. It's still a machine that is more than sufficient for any tasks an average developer would throw at it.

Anyway, since OP stated explicitly that they want the Touch Bar, the 13" MBP will make an excellent machine for their purpose.
 

deconstruct60

macrumors 604
Mar 10, 2009
7,979
1,172
What does this have to do with Computer Science though? In theory, you don't need a computer at all.
Don't need a computer because going to time share on the Universities equipment or just don't need the computer at all as fundamental tool of instruction. ? The former I think does matter to the quality of CS instruction. It typically means the assignments are constrained by the resources the school can buy with probably a fixed departmental budget. That's more of "have to" because don't have money issue; not optimal pedagogical impact. (Yes there are income ranges for students so will have to get by with just labs, but too much lab time constraint is counter productive. Some students learn at different speeds at which point labs with relatively limited seating are not 'better'. ). As for the latter, frankly don't even know how would be certified a CS department with that approach. Certainly will get that dept on the "trash bin" pile for applications in many tech companies I know.

"don't need a computer" for CS ' is like "don't need electricity" for Electrical Engineering. It is just not a good modern CS department. I know there are some older CS departments that formed out of the Math departments ( or Science/'Liberal Arts' School wing of the university) were the course load is skewed far more toward the math side , but hardly any computer at all? That won't fly in CS department that is coupled to an Engineering School (wing) of a Univ .

Some schools have two departments CS and "IT" and each have carved out a hard niche away from one another so as to not overlap ( and get merged in a cost cutting move). The "barely touch" computer CS departments in that boat I don't think represent most of the CS departments out there at this point. At least in the top tier USA schools.
 

pshufd

macrumors 65816
Oct 24, 2013
1,302
880
New Hampshire
Don't need a computer because going to time share on the Universities equipment or just don't need the computer at all as fundamental tool of instruction. ? The former I think does matter to the quality of CS instruction. It typically means the assignments are constrained by the resources the school can buy with probably a fixed departmental budget. That's more of "have to" because don't have money issue; not optimal pedagogical impact. (Yes there are income ranges for students so will have to get by with just labs, but too much lab time constraint is counter productive. Some students learn at different speeds at which point labs with relatively limited seating are not 'better'. ). As for the latter, frankly don't even know how would be certified a CS department with that approach. Certainly will get that dept on the "trash bin" pile for applications in many tech companies I know.

"don't need a computer" for CS ' is like "don't need electricity" for Electrical Engineering. It is just not a good modern CS department. I know there are some older CS departments that formed out of the Math departments ( or Science/'Liberal Arts' School wing of the university) were the course load is skewed far more toward the math side , but hardly any computer at all? That won't fly in CS department that is coupled to an Engineering School (wing) of a Univ .

Some schools have two departments CS and "IT" and each have carved out a hard niche away from one another so as to not overlap ( and get merged in a cost cutting move). The "barely touch" computer CS departments in that boat I don't think represent most of the CS departments out there at this point. At least in the top tier USA schools.
I guess that I'm more old-school theory.

I do not know how far over to practice universities have gone but I know a lot have moved over to practice. I had lunch with a few recent hires, one from Princeton and one from MIT and the one from MIT told me that they now have an Algorithms lite course. I was somewhat floored when I heard that. I do know that a lot of programs dropped requirements for a compilers course or maybe they never had one.

I just wonder if we've gone too far over to the practice side from the theory side. You can always learn the practice and it's always changing.
 

leman

macrumors G3
Oct 14, 2008
9,975
4,553
I just wonder if we've gone too far over to the practice side from the theory side. You can always learn the practice and it's always changing.
I agree. A lot of places just seem to be focused on "producing" domain-specialized programmers as quickly as possible, at the expense of actual theoretical (and deep practical) knowledge. CS graduates at a place I studied didn't know what the difference between static and dynamic dispatch is (as were taught Java), a modern programmer barely understands how hardware/caches works, they are taught just a few programming patterns which leads to terrible software design (OOP abuse etc.) and so on. But I am afraid we are taking this thread off-topic enough :)
 

pshufd

macrumors 65816
Oct 24, 2013
1,302
880
New Hampshire
I agree. A lot of places just seem to be focused on "producing" domain-specialized programmers as quickly as possible, at the expense of actual theoretical (and deep practical) knowledge. CS graduates at a place I studied didn't know what the difference between static and dynamic dispatch is (as were taught Java), a modern programmer barely understands how hardware/caches works, they are taught just a few programming patterns which leads to terrible software design (OOP abuse etc.) and so on. But I am afraid we are taking this thread off-topic enough :)
This was written in 2005: https://www.joelonsoftware.com/2005/12/29/the-perils-of-javaschools-2/

Northeastern University is known for their coop program and ability to get graduates into the workforce. I spoke to a coworker a long time ago and she told me that her husband interviewed many graduates that didn't have simple theory knowledge and he wondered what was going on in university CS programs back then.

Northeastern was only doing what the markets (employers + students) wanted. And it has worked - Northeastern got a lot more applicants and spent a ton of money upgrading their buildings and facilities. So maybe we're the dinosaurs.