Apple's other open secret: the LLVM Complier

2

Comments

  • Reply 21 of 51
    ipeonipeon Posts: 1,122member
    Is SproutCore Apple?s Flash killer?
  • Reply 22 of 51
    vineavinea Posts: 5,585member
    Quote:
    Originally Posted by merdhead View Post


    The fact they think that a compiler is involved in scheduling threads, that it 'optimises for parallelism' at the code level for multiple processors and that the OS is involved is scheduling parallel code makes them look silly.



    Actually, given that they effectively control Objective-C, the compiler, the hardware and the OS they are better positioned than everyone else to provide the language hooks and the compiler, OS and hardware support to better support parallelism for developers.



    More than even Intel, MS or Sun (with the dubious exception of Java on OpenSolaris running on a Sparc).



    In any case, there are compilers that optimize for parallelism (OpenUH, VFC, PGI, etc) but mostly they're just more efficient at targetting things like OpenMP or MPI.



    Meh, I guess someone like MS or Intel could get by with something like pragma statements to provide the needed hints but that's just inelegant.
  • Reply 23 of 51
    skottichanskottichan Posts: 193member
    Quote:
    Originally Posted by aplnub View Post


    Cylons! Someone get those mother frackers before they ruin the entire fleet.



    *shoots aplnub* Dun touch my Six...





    *cough*





    With that unfortunate business out of the way, I'm still pretty damn excited about the stuff I see coming out of the Snow Leopard announcement.
  • Reply 24 of 51
    zunxzunx Posts: 620member
    So what is LLVM for in plain English for mere mortals? Can it be used to automatically make iPhone applications from Mac applications? Thanks.
  • Reply 25 of 51
    merdheadmerdhead Posts: 587member
    Quote:
    Originally Posted by Aurora72 View Post


    You mean that all of Apple's previous OS's were spaghetti code? Really? Do you double as an AP journalist as well? Both this article and their reporting are seriously fact-challenged.



    Yeah I forgot to mention that one. The author doesn't even know what spaghetti is.
  • Reply 26 of 51
    merdheadmerdhead Posts: 587member
    Quote:
    Originally Posted by zunx View Post


    So what is LLVM for in plain English for mere mortals? Can it be used to automatically make iPhone applications from Mac applications? Thanks.



    No. It's a compiler back end, the bit of the compiler that does the hard work (producing an executable). The front end of a compiler reads the code written in whatever language and translates it into a form the back end can handle.
  • Reply 27 of 51
    davidf01davidf01 Posts: 18member
    Quote:
    Originally Posted by zunx View Post


    So what is LLVM for in plain English for mere mortals? Can it be used to automatically make iPhone applications from Mac applications? Thanks.



    hey zunx.



    the short answer is, no, llvm is not about converting the UI from desktop osx to mobile osx.



    llvm is a tool that system-designers (at apple) create to make it easier for system them (ie the designers at apple) to create tools that developers can use to make their applications use the hardware in a more efficient way.



    as an end-user, the main impact that llvm will have on you is that you apps will run faster :-)



    dont be offended, but the explanation in the article is already pretty basic, so if you dont understand that then there is not much more that can help you understand.



    but dont be afraid to keep asking questions!
  • Reply 28 of 51
    alexralexr Posts: 2member
    Quote:
    Originally Posted by AppleInsider View Post


    LLVM only just got started at the University of Illinois in 2000 as a research project of Chris Lattner. It was released as version 1.0 in 2003. Lattner caught the attention of Apple after posting questions about Objective-C to the company's objc-language mailing list. Apple in turn began contributing to the LLVM project in 2005 and later hired Lattner to fund his work.



    Actually, I became aware of LLVM because of Chris' early posts to the FSF GCC development lists. I called attention to LLVM to Ted Goldstein, then head of Developer Tools at Apple, who summarily ignored it because management above him was known to favor GCC despite any technical merits other projects might have.



    Along the way, I evangelized LLVM to Nate Begeman and Louis Gerbarg. They ended up writing the PowerPC backend for LLVM as a side project. It wasn't until much later that LLVM's apparent maturity, coupled with the unknowns about the forthcoming FSF GPLv3, and other needs such as a replacement for the OpenGL AltiVec JIT, that Apple committed to LLVM.



    LLVM has been a huge win for Apple and we should all be excited about it as users because this is the path via which better, faster, and less buggy code will be written.



    In a similar manner of shake-up, look into the new "gold" linker that Ian Lance Taylor and others have built to replace the normal FSF linker. Apple has a custom linker that can't benefit from this work, but it's a fascinating development nevertheless.
  • Reply 29 of 51
    sequitursequitur Posts: 1,910member
    I've been using computers since before desk tops and never understood explanations of what a compiler was or did. Now, thanks to Merdhead and DavidfO1, I have at least a glimmer of understanding.

    And, although I didn't gut level understand 99% of this thread, it was truly interesting. Thanx, guys. You're awesome.
  • Reply 30 of 51
    jd100293jd100293 Posts: 11member
    Quote:
    Originally Posted by da2357 View Post


    Count me in... I guess we're either machines or dinosaurs!



    Heres to us non-Humans!
  • Reply 31 of 51
    rbirkbyrbirkby Posts: 2member
    Quote:
    Originally Posted by dutch pear View Post


    Makes you wonder when companies that focus on a single aspect will see the light.

    Microsoft, Dell, Samsung, Sony, Nokia, Google, I'm looking at you!



    Lattner used to work on Microsoft's Phoenix advanced compiler framework - essentially Phoenix is Microsoft's equivalent of LLVM.
  • Reply 32 of 51
    wigginwiggin Posts: 2,265member
    Quote:
    Originally Posted by Dick Applebaum View Post


    We (more progressive) programmers write code in octal absolute. A programmer with any credentials would not trust these newfangled assemblers as they introduce cruft and generate un-optimized code.



    Further, the practice of using macro-instructions should be avoided at all costs-- it is a sign of laziness that will only serve to further estrange the programmer from the hardware and introduce bloat into the resulting program.



    "I'll tell you the problem with the scientific power that you're using here: it didn't require any discipline to attain it. You read what others had done and you took the next step. You didn't earn the knowledge for yourselves, so you don't take any responsibility for it. You stood on the shoulders of geniuses to accomplish something as fast as you could and before you even knew what you had you patented it and packaged it and slapped it on a plastic lunchbox, and now you're selling it."

    - Dr Ian Malcolm, Jurassic Park



    I think we need fewer developers and more programmers, people who know how the the whole system works and can optimize it and make it work well. My problem with Flash isn't [just] the technology. It's how people use/abuse it. It's people who use it because it's easy, not because it's the right tool for the job.
  • Reply 33 of 51
    melgrossmelgross Posts: 33,510member
    Quote:
    Originally Posted by Wiggin View Post




    I think we need fewer developers and more programmers, people who know how the the whole system works and can optimize it and make it work well. My problem with Flash isn't [just] the technology. It's how people use/abuse it. It's people who use it because it's easy, not because it's the right tool for the job.



    That simply won't work anymore. The days when a single programmer could write a complex program for a modern OS is pretty much done and over with. There's too much to understand, and too much to code.



    Could you see a program such as any of the major ones being done by one programmer? No, you need a number of them, possibly dozens, all specialized in their own area of expertise. None of them understand the entire program.
  • Reply 34 of 51
    auxioauxio Posts: 2,727member
    I actually became aware of LLVM a while back via iPhone hacking. A bunch of folks were trying to figure out how to create software for the iPhone and quickly found that no known compiler/linker combination could generate MachO-ARM binaries (that naming combination still cracks me up).



    Scouring through the Apple GCC mailing list for clues, they found mention of LLVM and ARM (a discussion thread which ended abruptly) and realized that was the missing piece of the puzzle. The rest is history (what basically allowed for all of the early iPhone software development).



    I'm still a bit fuzzy on some of the technical details of LLVM (the JIT aspect of it), but do I know that it's a nice modular system for more easily generating optimized code on many different platforms.
  • Reply 35 of 51
    mdriftmeyermdriftmeyer Posts: 7,503member
    Quote:
    Originally Posted by melgross View Post


    That simply won't work anymore. The days when a single programmer could write a complex program for a modern OS is pretty much done and over with. There's too much to understand, and too much to code.



    Could you see a program such as any of the major ones being done by one programmer? No, you need a number of them, possibly dozens, all specialized in their own area of expertise. None of them understand the entire program.



    You're overlooking people with actual Engineering field credentials. Everyone I worked with at NeXT Engineering knew from the basics of kernel programming to userspace APIs and how ObjC and the mach microkernel worked together. It was a small, deeply knowledge set of geniuses who actually loved to help and expand other engineers learning it along the way.



    You want to know how many developers wrote TIFFany 3? Two. They now both work at Apple. Many of TIFFany 2.x technologies were copied by Adobe for Photoshop.



    How many developers write Create and the suite of Stone Design Tools? One main developer and some help from a few others.



    The OmniGroup of Developers is extremely small.



    The Lighthouse Design group, now owned by SUN, was a very small group as well.



    Some are now working on iWork.



    Sorry, but if companies would hire actual individuals holding Engineering degrees they would be better served.



    Accredited universities in CS tend to have the following:



    Course sequences allowing students to specialize in specific areas such as:
    • computer graphics,

    • computer networking,

    • computer systems software,

    • software engineering, or

    • computer engineering.

    Of course, I'd recommend companies first hire individuals who've worked for Operating System companies or within Operating System projects [Linux, RiscOS, Haiku, et.al], before hiring the fresh grad who knows Flash, Javascript and Photoshop.



    If they want Liberal Arts computer graphic artists that's all they'll ever get.



    As someone who did Mechanical Engineering and Computer Science do you think I'd be hired to be a Mechanical Engineering in-training without my degree in said field? No.



    What makes the Software Industry think it can actually get away with it and not feel the ripples along the way?



    One problem is that we are driven by 6 month cycles to bring out the next best thing before figuring out if it's got a foundation worth building on.



    There is a reason C is still vital and FORTRAN is critical in many Engineering applications, especially Numerical Analysis--there is decades of refinement and design behind it.



    The dubious C Programming language is so deeply ingrained in Computer Graphics, Compilers, Kernels, to every aspect of programming where it shares duties with C++, ObjC, Java, Fortran, Ada, Pascal, Eiffel and more that it's clear that Python, Ruby, Javascript, the many ML functional languages and more are just one big family serving to solve our needs.



    The goal isn't to learn their languages and syntax but to learn the mathematical approach to design solutions [applications, services, classes, methods, delegates, etc] to solve programmatically large data sets where regular symbolic mathematics works if we only had a million years to crunch it out.



    However, the more deeply knowledgeable one is in the mathematical theories the smaller and more rapidly the solutions will surface and thus picking the right tool for the job is the road to completion.



    That takes years of learned skill development that many industries stopped doing over a decade prior. They want temporary solutions that mainly drive entertainment revenue streams.



    Industry jumped on the WEB bandwagon and ductaped it together.



    An example of this is Apache 1 and 2 Web Servers. Great products within their original design scopes. Unfortunately, they've had to be bloated to adapt to each new web technology that comes along and gets "popular" with the business markets.



    The law of diminishing returns eventually rears it's ugly head and thats when people start to look around for those who realized the end game would require them to have knowledge to see the general scope to solve this dilemma.



    One said example is the next generation of Apache 3.0.



    Go read up on what Apache 3.0 will do for the Web. It's a complete rewrite and guts out about 90% of the crap thrown on their from past ideas that made no sense.



    Here is the ApacheCon PDF (13 MB)

    http://roy.gbiv.com/talks/200804_Apache3_ApacheCon.pdf





    Don't get me wrong: most people do a bad job at faking their careers while keeping themselves distracted through the weekends knowing they return to another weak of bs.



    However, that keeping up with the Jones mentality doesn't work in the long run.



    I agree with the grandparent poster who pointed out the abuse and misuse of Flash by people who use it to make money as glorified presentations for business leaders too ignorant to know whether it's smart to pay them or not.



    The number one driver of the Net has been Entertainment. People are not excited about the hard sciences, but sure as hell hunt down solutions to their Flash player problems as if it's a matter of life or death--YouTube generation indeed.
  • Reply 36 of 51
    wigginwiggin Posts: 2,265member
    Quote:
    Originally Posted by melgross View Post


    That simply won't work anymore. The days when a single programmer could write a complex program for a modern OS is pretty much done and over with. There's too much to understand, and too much to code.



    Could you see a program such as any of the major ones being done by one programmer? No, you need a number of them, possibly dozens, all specialized in their own area of expertise. None of them understand the entire program.



    Yeah, what mdriftmeyer said!! Plus that I never said it should be done by a single person. Every reference was in the plural.



    I remember having to deal with 14.4 kbps being the fastest internet connection people had and cleaning up HTML code by hand to remove every extraneous bit so it would download as fast as possible. The early WYSIWYG HTML apps created bigger files that took twice as long to download; and when Word started exporting to HTML, it drove me nuts the boated crap people started generating.
  • Reply 37 of 51
    melgrossmelgross Posts: 33,510member
    Quote:
    Originally Posted by mdriftmeyer View Post


    You're overlooking people with actual Engineering field credentials. Everyone I worked with at NeXT Engineering knew from the basics of kernel programming to userspace APIs and how ObjC and the mach microkernel worked together. It was a small, deeply knowledge set of geniuses who actually loved to help and expand other engineers learning it along the way.



    You want to know how many developers wrote TIFFany 3? Two. They now both work at Apple. Many of TIFFany 2.x technologies were copied by Adobe for Photoshop.



    How many developers write Create and the suite of Stone Design Tools? One main developer and some help from a few others.



    The OmniGroup of Developers is extremely small.



    The Lighthouse Design group, now owned by SUN, was a very small group as well.



    Some are now working on iWork.



    Sorry, but if companies would hire actual individuals holding Engineering degrees they would be better served.



    Accredited universities in CS tend to have the following:



    Course sequences allowing students to specialize in specific areas such as:
    • computer graphics,

    • computer networking,

    • computer systems software,

    • software engineering, or

    • computer engineering.

    Of course, I'd recommend companies first hire individuals who've worked for Operating System companies or within Operating System projects [Linux, RiscOS, Haiku, et.al], before hiring the fresh grad who knows Flash, Javascript and Photoshop.



    If they want Liberal Arts computer graphic artists that's all they'll ever get.



    As someone who did Mechanical Engineering and Computer Science do you think I'd be hired to be a Mechanical Engineering in-training without my degree in said field? No.



    What makes the Software Industry think it can actually get away with it and not feel the ripples along the way?



    One problem is that we are driven by 6 month cycles to bring out the next best thing before figuring out if it's got a foundation worth building on.



    There is a reason C is still vital and FORTRAN is critical in many Engineering applications, especially Numerical Analysis--there is decades of refinement and design behind it.



    The dubious C Programming language is so deeply ingrained in Computer Graphics, Compilers, Kernels, to every aspect of programming where it shares duties with C++, ObjC, Java, Fortran, Ada, Pascal, Eiffel and more that it's clear that Python, Ruby, Javascript, the many ML functional languages and more are just one big family serving to solve our needs.



    The goal isn't to learn their languages and syntax but to learn the mathematical approach to design solutions [applications, services, classes, methods, delegates, etc] to solve programmatically large data sets where regular symbolic mathematics works if we only had a million years to crunch it out.



    However, the more deeply knowledgeable one is in the mathematical theories the smaller and more rapidly the solutions will surface and thus picking the right tool for the job is the road to completion.



    That takes years of learned skill development that many industries stopped doing over a decade prior. They want temporary solutions that mainly drive entertainment revenue streams.



    Industry jumped on the WEB bandwagon and ductaped it together.



    An example of this is Apache 1 and 2 Web Servers. Great products within their original design scopes. Unfortunately, they've had to be bloated to adapt to each new web technology that comes along and gets "popular" with the business markets.



    The law of diminishing returns eventually rears it's ugly head and thats when people start to look around for those who realized the end game would require them to have knowledge to see the general scope to solve this dilemma.



    One said example is the next generation of Apache 3.0.



    Go read up on what Apache 3.0 will do for the Web. It's a complete rewrite and guts out about 90% of the crap thrown on their from past ideas that made no sense.



    Here is the ApacheCon PDF (13 MB)

    http://roy.gbiv.com/talks/200804_Apache3_ApacheCon.pdf





    Don't get me wrong: most people do a bad job at faking their careers while keeping themselves distracted through the weekends knowing they return to another weak of bs.



    However, that keeping up with the Jones mentality doesn't work in the long run.



    I agree with the grandparent poster who pointed out the abuse and misuse of Flash by people who use it to make money as glorified presentations for business leaders too ignorant to know whether it's smart to pay them or not.



    The number one driver of the Net has been Entertainment. People are not excited about the hard sciences, but sure as hell hunt down solutions to their Flash player problems as if it's a matter of life or death--YouTube generation indeed.



    That's a long, and interesting post. But I don't care how many degrees a person has, they simply can't come up with a Photoshop, or a Word, or similar program by themselves anymore. These have gotten far too complex, and the number of API's in a modern OS are large. Add that in with parallel processing, GPU takeovers etc. and it requires a team of specialized people.



    Stone has been around for quite some time, and when they started, NEXT was far simpler than OS X is today. So were the computers.



    Starting programs that get increasingly more complex as the years go on is one thing. Starting a new program that has to compete with those programs that are now in high digit versions is difficult.
  • Reply 38 of 51
    *YAAAAAAAAWN*
  • Reply 39 of 51
    merdheadmerdhead Posts: 587member
    Quote:
    Originally Posted by melgross View Post


    That's a long, and interesting post. But I don't care how many degrees a person has, they simply can't come up with a Photoshop, or a Word, or similar program by themselves anymore. These have gotten far too complex, and the number of API's in a modern OS are large. Add that in with parallel processing, GPU takeovers etc. and it requires a team of specialized people.



    Stone has been around for quite some time, and when they started, NEXT was far simpler than OS X is today. So were the computers.



    Starting programs that get increasingly more complex as the years go on is one thing. Starting a new program that has to compete with those programs that are now in high digit versions is difficult.



    You obviously haven't written any software professionally, or worked for a large development team.



    A large set of APIs make software easier to write, not harder. I can get the gist of thousands of API calls and lookup what I need as I need it. It radically reduces the amount of software I have to write.



    Software is harder to write the more people you add, not easier. It's fine if you have a concrete spec which has long been frozen and doesn't change very much, and you know exactly what you are writing (eg Linux Kernel). But in every other case (and most interesting cases) it means more co-ordination, more communication and less freedom to act. Large software projects (in the billions) have known to collapse under their own weight (read "The Mythical Man Month"). Most good software was written by individuals. See Microsoft products for what happens with large teams (I might add that the Mac versions of their Office suite used to be developed by small teams).



    Programs get more complex over time because of more developers and other people getting involved. Writing a program yourself, even a big one, means you have much more chance of it working and it being elegant and efficient.



    Finally computers are not any more complex today than they were 10 or 20 years ago, they just have more capacity. In most senses they are simpler because as a programmer you can harness that capacity. You can't have to hand code in assembler to get things to run at a reasonable speed, for instance. Computer software hasn't changed appreciably since 1984. Most good computer science ideas invented in the 60 and 70's (and maybe early 80's), its been a process of refinement ever since, largely. Here's a hint for the morons: there is no new computer science in Facebook.
  • Reply 40 of 51
    auxioauxio Posts: 2,727member
    Quote:
    Originally Posted by melgross View Post


    That's a long, and interesting post. But I don't care how many degrees a person has, they simply can't come up with a Photoshop, or a Word, or similar program by themselves anymore. These have gotten far too complex, and the number of API's in a modern OS are large. Add that in with parallel processing, GPU takeovers etc. and it requires a team of specialized people.



    Stone has been around for quite some time, and when they started, NEXT was far simpler than OS X is today. So were the computers.



    Starting programs that get increasingly more complex as the years go on is one thing. Starting a new program that has to compete with those programs that are now in high digit versions is difficult.



    From my personal experience, it's usually good to have a small core of "architects" who are very knowledgeable and passionate developers. Often this is only one or two people. I believe this is what mdriftmeyer is talking about.



    Sure you'll have a lot of other folks involved: graphic designers, UI designers, and other developers. But it's this small, dedicated core group which dictates the main structure of the software and ensures that new features are well thought out and added properly. Not just thrown in haphazardly. If you don't have this core group and just have people working in their own directions, you quickly end up with an unmaintainable pile of steaming code.



    So while I agree that no one person can create a large piece of software, I also believe that you need a small group of dedicated people to ensure things are structured properly. These people are usually responsible for the majority of the code in the project (either directly or indirectly).
Sign In or Register to comment.