6 ms·
I can hardly understand anything in that doc. I'm a decent-enough iOS programmer from a LAMP and design background. It makes me wonder if in 20 years people lik
by adjwilli 13y ago
I can hardly understand anything in that doc. I'm a decent-enough iOS programmer from a LAMP and design background. It makes me wonder if in 20 years people like me will look back at the iOS programming guide and be equally confused. As programming gets abstracted out, put into frameworks and simplified at the user-level it's sure to go even more visual.
- segmondy 13y agoI like that you said you are an "iOS programmer" that's the problem with programming today. you are not a programmer. if you were a programmer, you would be able to make sense of that document. so to answer your question, 20 years from now, programmers of that era will be able to make look at iOS programming docs and understand it, meanwhile "20 year future language programmers" won't. I say this because I learned gameboy programming in my first year of college (1997) by learning z80 and reading gameboy programming text files that were probably around 5 pages. that low level programming, till today serves me well.
- deletes 13y agoI don't see any reason why "future" programers could not just learn low level stuff. Your reasoning is completely subjectively based. Programing is something more than just specific knowledge. programmer from dictionary: >>a person who writes computer programs; a person who programs a device, especially a computer. << iOS Programers fit that description.
- aa0 13y agoOP is referring to programmer in the same vein as someone refers to an 'artisan.' You wouldn't call someone an artisan if all they do is manage the inventory order from Baked-Cakes-For-Fakes. There are far too many 'programmers' who can't code their way out of a paper bag. If you don't know assembly you probably blow at debugging, and that's amateur.
- diydsp 13y agohmmm. a bit harsh and inaccurate to call him "not a programmer." We are all really just digital stage managers. Here's the secret to understanding the difference between API'ists and low-level programmers: time-to-market. iOS programming is deeply mainstream in the market right now, so elaborate frameworks are available for it. GameBoy was waaaay ahead of its time and had no APIs for developing. The same is true today: If you want to get ahead of the market, you can take the hit in complexity and develop for a lower-level of hw/sw, like the Parallela, in exchange for a short-term advantage, but there's no mainstream market yet. Or, you can write a great iOS app today, but you won't be the first. The initiative was lost a long time ago. It's all about withstanding the headaches of bleeding-edge HW and SW, versus gaining the edge of being earlier to market. If you're assembling a team, you want a range of abilities, from lowest-level people who can tell you what's really going on down deep inside up to the APIists who can leverage the work of many others to get access to widely-used features.
- gngeal 13y agoWhat makes you think that a "low-level programmer" can't do time-to-market stuff? That's like saying that a professional writer and proofreader can't fire off a quick SMS to his friends (sometimes with a typo, but nobody cares).
- diydsp 13y agoah, i can see how my comment could create confusion. I was actually intending agree with you, to mean that the low-level programmers are precisely those individuals who achieve the time-to-market. They can wade through the specs and configure devices before the polished API becomes available.
- mackwic 13y agoWow you are such a great person ! For sure this community don't deserve to host your kind of magnificent programmers. Please help yourself and go speak to real programmers on OSDev rather than troll^W lose you time here. Thank you.
- djweber 13y agoGreat attitude. That's like saying people that program in ASM on graphical displays aren't real programmers due to not using the old punchcard system. Get over yourself.
- general_failure 13y agoTruly spoken like someone who has never written iOS programs. Some iOS programs are actually truly inspiring and I know of many people who haven't gotten into that market because it's too competitive (programming wise). FWIW, I know my x86 assembly and am not an iOS programmer. But I have huge respect for good iOS programmers. Some of those apps are phenomenal.
- aa0 13y agoThe framework is glorious, the underlying user-base code can still be utter horse shit. Any programmer that doesn't know assembly is worth his weight in basic.
- LukeShu 13y agoHe's not claiming that someone who programs for iOS is a bad programmer. At all. He's claiming that people who identify themselves as an "iOS programmer", rather than just a "programmer", aren't really programmers. A "programmer" might be able to write inspiring stuff for iOS, but they haven't pigeon-holed themselfs into being an "iOS programmer"
- wolfgke 13y ago> I know of many people who haven't gotten into that market because it's too competitive (programming wise). Or because it's a market where really awesome programmers can't distinguish themselves from good-enough average ones because few customers can discriminate between those.
- aa0 13y agoThis 100%. It pangs me to see people call themselves .NET programmers or iOS programmers. You're either a general programmer or you're a class act. I know about 20 languages at this point and they all serve me well. You can bet you're going to need to know the hardware as well as assembly translation when you're not designing a stupid social app. Or well, don't learn assembly and continue to be mystified by the lldb debugger assembly dump in XCode, "that's just low level tundra tuft, lemme just close that and add some print statements..".sigh
- blatherer 13y agoi'm sure there are many talented .NET programmers who could quickly pick up assembly and become much more productive than you in that language... if they had a good reason to learn it.
- aa0 13y agoThat's not how it works. There's a reason unintelligent folk stick to one thing, it's because their aptitude does not stretch well across multiple venues. Programming is like chess, most good chess players play bughouse, losers chess, etc.. .NET is like sticking to 20min chess your whole life. You might get good with t but you have no dynamic range...
- aa0 13y ago.NET is also so slathered up with dainty object boxing that to claim a .NET coder could easily pickup assembly is more than laughable.
- agumonkey 13y agoFrom what I gathered (8bit era cpu, console hardware videos) the concept of programming has virtually evolved. Nowadays you use general languages to interact with a system or set of virtual devices (iOS, its subsystems etc) meanwhile in the GB era the system was a set of concrete hardware chips connected by buses and you used mnemonics to orchestrate them (by low level byte messages). My conclusion is that you don't understand because it's a very alien looking framework. I'd also bet 5$ that in 20 years the changes won't be as dramatic as the 80s-00s shift.
- gngeal 13y agoI'd also bet 5$ that in 20 years the changes won't be as dramatic as the 80s-00s shift. Thare's been a "dramatic change" between the 80's and 00's? If so, I must have missed it. I look at, say, IBM 1620 versus the machines designed in the 1980's, and that is change to me. In the 1980's, essentially everything we use now in the area of personal computing architectures has already been invented and put to use. Essentially, by the time you get to the 1980's, everything has been so homogenized and regularized that I really don't see anything new that happened since then. Perhaps some change is going on now - AMD's hUMA seems to me to be the first major departure from the 1980's machine model in those twenty five years or so, but even then, I'm not sure how much is that "new" - IBM has had heterogenous CPUs on their mainframes for quite some time, so conceptually, it's just another idea getting to the PC world from the world of mainframes.
- agumonkey 13y agoif you say so
- rms25 13y agoI think this document nowadays is more catered to embedded or micro-controller programmers. When the document was released it was common to get close to the hardware and probably most people had some experience/exposure nowadays not so much
- adamio 13y agoAgreed. Even today someone at Apple has to know the iOS-analog of this low level GameBoy info. iOS SDK is not congruent with this document
- aa0 13y agoUnless you know low-level programming, you're not really a programmer -- at least not one that won't commit a whole host of errors and mistakes. Know your hardware, know your assembly, know your C, and know your higher level languages and frameworks. Being ignorant to the base layers is sloppy, mate.
- rogerbinns 13y agoWhat has changed over time are the constraints. Nowadays if you want to store a number you can just do so. NSDictionary deals with mappings. You can just serialise data out and back again. You don't need to worry about memory until a crash says you are using too much, at which point Instruments points the finger. You are unlikely to encounter most boundary conditions in your code (I don't remember the last time malloc-equivalents returned no memory). Back in the "olden" days, storing a number required thought. 8 bit processors could often deal with 16 bit values, but beyond that you were on your own. You had to be very careful designing your data structures so they used the least memory possible. Saving data was unreliable. There were often no debugging tools at all. Some lucky folks had ICE[1] but most of us had to guess why the system hung. All this meant you had to get low level because of the constraints. But you know back in those olden days we didn't have to have a comprehensive help system. We could assume users were proficient. We didn't have to deal with security and attacks. No networking. Undo was rare, and if it existed was a single step. Your code only ran in one human language. So while we did have to care about the low level implementation details of the code, we didn't have to worry too much about the rest. The low level constraints are pretty much gone now. The tools are great. And you do have to worry about a lot beyond the actual implementation like usability, smooth animations (games had to worry about that in the olden days but in a different way), multiple languages, coordinating with other systems over a hostile network, attacks and a whole bunch more. I'm glad for all this, because worrying about fitting data structures and a framebuffer in 16kb of memory didn't make for a better app. Being familiar with the low level is still sometimes helpful, but not that often. It is also a heck of a lot more complicated - eg compiler produced code is not straightforward and logical. Multiple levels of cache, cache policies, speculative execution etc make reasoning about data more difficult. The majority of the time it doesn't matter. Right now the majority of mobile apps behave rather poorly if you have more than one device. In the future that will be a given. UI is more likely to be goal driven with the system figuring best practises for meeting the goals, versus nudging things by pixels as is done today. (Heck a user will probably do some combination of pointing, speaking, thinking and just plain old looking.) I'd expect a more functional approach where immutable states are the unit of an app, and new states are produced via interaction and external updates with the states syncing across everywhere relevant instantly. [1] http://en.wikipedia.org/wiki/In-circuit_emulator http://en.wikipedia.org/wiki/In-circuit_emulator