Apple's new Xcode 4 could portend new HTML5 development tools

24

Comments

  • Reply 21 of 63
    socratessocrates Posts: 261member
    Quote:
    Originally Posted by MacTel View Post


    I guess I'm looking for a programmers review of Xcode 4.0. How does Objective C compare with Java and C#. What's new between Xcode 4.0 and Xcode 3.2 besides the interface changes. Are there any new coding paradigms in Objective C or is it all good. Beside C/C++ and Objective C does Xcode support other languages (e.g. Java, Rudy, PHP, etc.). Those are just some things I'd be interested in since I haven't used Xcode 4.0 before and plan to soon.



    I'm used to Visual Studio and C/C++/C# on Windows. I'm hoping Objective C as much a pleasure to code in as C# if not better. It appears Xcode 4.0 is along the way of ease of use as Visual Studio.



    Does Xcode 4.0 ship with built-in source control or can it easily plug into some free version out there (subversion)?



    It's important not to confuse Xcode (the development tool) with Objective-C (the language) and Cocoa (the API). Xcode 4 ships with the same versions of Objective-C and Cocoa as Xcode 3.x.



    That said, I believe I can answer your questions:



    - If you've never coded in Objective-C it's going to seem very weird compared to C#. It's fully object oriented and has the same concepts (methods, classes, single inheritance, interfaces (called protocols in Obj-C)) but the syntax is strange and you need to get to grips with manual memory management, at least if you plan on doing iPhone development.

    - No new coding paradigms in Xcode 4, but Objective-C does have paradigms that you don't tend to see in C# e.g. KVO/KVC and blocks.

    - Supports Ruby via the Ruby-Cocoa bridge.

    - Java Support deprecated. PHP not relevant (can't be used for Mac or iPhone development, which is the purpose of Xcode).

    - Xcode 4 is more like visual studio than Xcode 3 so you'll probably like it.

    - Xcode included built-in SVN support but it's not all that great. I use Versions, or the command line.



    Hope that helps.
  • Reply 22 of 63
    jmmxjmmx Posts: 341member
    Quote:
    Originally Posted by Mr. Me View Post


    So I take it that it is too much trouble to download Xcode 4.0 and check it for yourself?



    Give the guy a break. This is what blogs are for - to communicate and maybe even (god forbid) help each other.



    You could as easily answered his question as be a twerp with your reply.
  • Reply 23 of 63
    t0mat0t0mat0 Posts: 58member
    Wasn't the issue more that Apple would need to make a tool for designers as much as developers? How to bridge the gap for creating HTML5 content. THough I could see Apple getting the bit between its teeth, and not wanting Adobe to be the main rate limiting step/controller for the most widely used HTML5 authoring/web design tool.
  • Reply 24 of 63
    0yvind0yvind Posts: 55member
    I sincerely hope Apple is not going to give away the whole website developement business to Adobe. To make a Flash site, you obviusly use Flash or the Dreamweaver/Flash combo. To make HTML, you buy Dreamweaver and install the HTML5 add-on.

    As Daniel mentions: they are still in an early stage of developement. But I'll give them credit, considering there aren't any alternatives yet. And it shows they aren't trying to hinder HTML5 developent even if it means competition to their Flash universe (maybe they've seen the painting on the wall...)? My main problem with DW is the antiquated and inconsistent user interface: so back to the 90's and PageMill-like.



    So here's a great opportunity for Apple to steal the limelight once again: Use whatever bits and pieces you've got in your developer's war chest (whether in XCode, iWeb, iWork) and put together a nice and simple HTML5 web editor for the rest of us. I must admit I made my first wary steps into webdesign in the early 90's with Apple's venerable (Claris) HomePage...

    .
  • Reply 25 of 63
    anonymouseanonymouse Posts: 6,857member
    Quote:
    Originally Posted by Socrates View Post


    - If you've never coded in Objective-C it's going to seem very weird compared to C#. It's fully object oriented and has the same concepts (methods, classes, single inheritance, interfaces (called protocols in Obj-C)) but the syntax is strange and you need to get to grips with manual memory management, at least if you plan on doing iPhone development.



    It's probably worth remarking that Objective-C is a primary ancestor language of Java, and thus C#, which is why many of the concepts are similar.
  • Reply 26 of 63
    timgriff84timgriff84 Posts: 912member
    Quote:
    Originally Posted by lowededwookie View Post


    I completely disagree I think XCode is a perfect place to do web application development. That's what Daniel is getting at not just static HTML5 pages but MobileMe class applications.



    The idea sounds a bit of a stretch to me and I agree with everyone that there's nothing really to suggest that this is what there doing. It would be good though, at the moment if you do web development the Mac is a bad platform to use as you basically have the choice of Dreamweaver which sucks and some basic text editors. At the same time, the next Xcode is only being Xcode up to date with the rest of IDE's around 8 years ago, which doesn't give you much faith that it's a good IDE to go with.



    Quote:
    Originally Posted by sheff View Post


    Yup, if it gets easier to develop for iPhone/Mac we will get much better applications without the desire to just build something that is "cross platform" which essentially means that it sucks equally bad on all platforms. Especially true of the UI, not just the look but the feel of the app as well.



    Cross platform does not mean equally bad on all platforms. You can almost guarantee that every large application that Microsoft, Adobe and even Apple make that is available for the Mac and PC has code written in C that is re-used between the two. Any decent developer knows the difference between interface code and business logic. Business logic rules are the same across two platforms and have no need to be re-written but Apple is making app developers essentially write out exactly the same code twice. Interface code does need to be re-written for each platform and is completely seperate, any developer that wanted to create a decent app would also re-write it to make there app popular on both platforms. Saying that "cross platform" means it sucks on all platforms is just a demonstration of not having a clue about development or being quite bad at it. True you can make an app quickly and badly using the same interface code, but you can make your app quickly and badly doing it natively as well. Preventing people from re-using code that isn't going to change functionally just means they have less time to write the code that should change.
  • Reply 27 of 63
    ooo, this is intensive enough to delve a little deeper and use it more than just for my blog



    Phillip Gibb

    SynapticLight
  • Reply 28 of 63
    Quote:
    Originally Posted by timgriff84 View Post


    Cross platform does not mean equally bad on all platforms. You can almost guarantee that every large application that Microsoft, Adobe and even Apple make that is available for the Mac and PC has code written in C that is re-used between the two. Any decent developer knows the difference between interface code and business logic. Business logic rules are the same across two platforms and have no need to be re-written but Apple is making app developers essentially write out exactly the same code twice. Interface code does need to be re-written for each platform and is completely seperate, any developer that wanted to create a decent app would also re-write it to make there app popular on both platforms. Saying that "cross platform" means it sucks on all platforms is just a demonstration of not having a clue about development or being quite bad at it. True you can make an app quickly and badly using the same interface code, but you can make your app quickly and badly doing it natively as well. Preventing people from re-using code that isn't going to change functionally just means they have less time to write the code that should change.



    +1 Insightful



    I find an inverse relationship between actual development experience and a willingness to parrot Jobs' talking points on the absurd issue of banning xplat tools and frameworks.
  • Reply 29 of 63
    anonymouseanonymouse Posts: 6,857member
    Quote:
    Originally Posted by RationalTroll View Post


    +1 Insightful ...



    -2 Not insightful at all.



    Quote:
    Originally Posted by timgriff84 View Post


    ... You can almost guarantee that every large application that Microsoft, Adobe and even Apple make that is available for the Mac and PC has code written in C that is re-used between the two. Any decent developer knows the difference between interface code and business logic. Business logic rules are the same across two platforms and have no need to be re-written but Apple is making app developers essentially write out exactly the same code twice. ...



    Since all C code is valid Objective-C code, if that code is "business logic" code, then, it would be reusable in an Objective-C project. So, what is said here is really a bit of nonsense.
  • Reply 30 of 63
    damn_its_hotdamn_its_hot Posts: 1,209member
    Quote:
    Originally Posted by Socrates View Post


    It's important not to confuse Xcode (the development tool) with Objective-C (the language) and Cocoa (the API). Xcode 4 ships with the same versions of Objective-C and Cocoa as Xcode 3.x.



    That said, I believe I can answer your questions:



    - If you've never coded in Objective-C it's going to seem very weird compared to C#. It's fully object oriented and has the same concepts (methods, classes, single inheritance, interfaces (called protocols in Obj-C)) but the syntax is strange and you need to get to grips with manual memory management, at least if you plan on doing iPhone development.

    - No new coding paradigms in Xcode 4, but Objective-C does have paradigms that you don't tend to see in C# e.g. KVO/KVC and blocks.

    - Supports Ruby via the Ruby-Cocoa bridge.

    - Java Support deprecated. PHP not relevant (can't be used for Mac or iPhone development, which is the purpose of Xcode).

    - Xcode 4 is more like visual studio than Xcode 3 so you'll probably like it.

    - Xcode included built-in SVN support but it's not all that great. I use Versions, or the command line.



    Hope that helps.





    Also, Xcode 4 is a huge change in workflow. This was one of the primary goals of the team. I think they did a great job. "fixit" is great (can suggest a fix and take care of it for you), error handling is also much smarter (the msgs actually mean something), and the static code analysis is great for looking for things like memory management problems (love the way it draws arrows around and numbers the steps taken that may cause the issue it is reporting).



    BTW: Git is also supported for version control as are snapshots and the version control is really cool (time machine-like interface) and the diff engine is really good.



    I think Xcode 4 is only available as a developer preview since it is still in beta but if you are a developer I suggest downloading for a try. I will coexist nicely and by default with a 3.2.x version.
  • Reply 31 of 63
    MacProMacPro Posts: 19,718member
    Quote:
    Originally Posted by 0yvind View Post


    I sincerely hope Apple is not going to give away the whole website developement business to Adobe. To make a Flash site, you obviusly use Flash or the Dreamweaver/Flash combo. To make HTML, you buy Dreamweaver and install the HTML5 add-on.

    As Daniel mentions: they are still in an early stage of developement. But I'll give them credit, considering there aren't any alternatives yet. And it shows they aren't trying to hinder HTML5 developent even if it means competition to their Flash universe (maybe they've seen the painting on the wall...)? My main problem with DW is the antiquated and inconsistent user interface: so back to the 90's and PageMill-like.



    So here's a great opportunity for Apple to steal the limelight once again: Use whatever bits and pieces you've got in your developer's war chest (whether in XCode, iWeb, iWork) and put together a nice and simple HTML5 web editor for the rest of us. I must admit I made my first wary steps into webdesign in the early 90's with Apple's venerable (Claris) HomePage...

    .



    I had Home Page too! Brings back memories



    Yes I agree iWeb and even and iWeb Pro with this under the hood would be cool. Throw in form and database integration as drag and drop widgets and cloud support for relational interactive push data with the pro version too!
  • Reply 32 of 63
    damn_its_hotdamn_its_hot Posts: 1,209member
    Quote:
    Originally Posted by anonymouse View Post


    -2 Not insightful at all.

    Since all C code is valid Objective-C code, if that code is "business logic" code, then, it would be reusable in an Objective-C project. So, what is said here is really a bit of nonsense.



    You have made a leap in you logic that is not going to get you to the other side, but swept away in a river instead.



    There is a huge difference between recompile-able, executable, and re-useable! Re-useable code requires a good bit of forethought and design to make it re-useable (or reworking of existing code to make it re-usable). You can have excellent code that is not easily re-useable because it was not designed to be used in a more general fashion (due to side effects, optimizations, thread safety requirements differing, etc...). Just because Objective C is a superset of C and will compile std (validated) C code does not make it re-useable.



    As many of the developers here can testify re-usability (in the classic CS sense) comes at a cost. Now taking a few lines of code from here and there and pasting them in is done all the time but this hardly defines re-usability. I would venture to guess that most truly re-usable code becomes so as part of a process that is taken up after a need is identified (such as doing the same thing exactly over and over agin in your product(s) or developing a method that allows sharing of a methodology so that it need not be reloaded in all applications that need it. SDK's or Frameworks are the common container for such re-usablity on the Mac/iOS when we speak of compiled in code.



    BTW: All valid C code will be valid Objective C code.
  • Reply 33 of 63
    inklinginkling Posts: 768member
    Whether it's EPUB or HTML 5.0 and whether it's Adobe, Apple or someone else, we need an application that can create attractive, complex, reflowable books that can display intelligently and well on devices with various screen sizes. The current state of the art is woefully inadequate for anything but novels with a single text flow.



    And it'd help if this silly fad for interactivity and multi-media would quickly pass, so we can get down to practical matters. Where that fad comes from, I can't imagine, but it reminds me of the early days of the web, when websites were cluttered with flashing text, moving lines of ants, and head-spliting animation were common.



    When people sit down to read an article or book, they don't want to be distracted by interactive rabbit trails running off in other directions, much less a lot of intrusive iAds. What we need are ebooks with at least half of the design and layout capabilities that printed books have had for centuries and PDF has had for a decade or more. That's a hundred times more important that silly addendum like dictionaries to look up the meaning of words.
  • Reply 34 of 63
    anonymouseanonymouse Posts: 6,857member
    Quote:
    Originally Posted by Damn_Its_Hot View Post


    You have made a leap in you logic that is not going to get you to the other side, but swept away in a river instead.



    There is a huge difference between recompile-able, executable, and re-useable! Re-useable code requires a good bit of forethought and design to make it re-useable (or reworking of existing code to make it re-usable). You can have excellent code that is not easily re-useable because it was not designed to be used in a more general fashion (due to side effects, optimizations, thread safety requirements differing, etc...). Just because Objective C is a superset of C and will compile std (validated) C code does not make it re-useable.



    ...



    BTW: All valid C code will be valid Objective C code.



    Well, yes, I should have said "valid C code". But, if your "business logic" code is reusable with new UI code for another platform, it's very likely that it will be reusable without a complete rewrite with a Cocoa or CocoaTouch app. The OP's claim was that SJ/Apple were forcing developers to write their C code twice, which is not the case. If the C code isn't relatively reusable, then the developers forced themselves to rewrite it.
  • Reply 35 of 63
    bartfatbartfat Posts: 434member
    Quote:
    Originally Posted by Damn_Its_Hot View Post


    There is a huge difference between recompile-able, executable, and re-useable! Re-useable code requires a good bit of forethought and design to make it re-useable (or reworking of existing code to make it re-usable). You can have excellent code that is not easily re-useable because it was not designed to be used in a more general fashion (due to side effects, optimizations, thread safety requirements differing, etc...). Just because Objective C is a superset of C and will compile std (validated) C code does not make it re-useable.



    The whole reason Objective-C even exists is to allow Apple to control the direction of a programming language. Let me elaborate. If Adobe or Microsoft instead controlled the language specification, then Apple would be at the mercy of those companies to be able to include new features or APIs because those languages wouldn't support them and therefore developers wouldn't be able to write those features or APIs. Now, suppose in this made-up situation, Objective-C 2.0 (as it is in its current form) suddenly appears out of Apple. Now, Apple has the ability to control what the language supports, what APIs it has, can do greater optimization for the platform (i.e. greater performance), and just better integration because there's a focus on doing a single platform well, instead of doing good (usually just okay performance) on a bunch of platforms. While cross-platform makes it technically easier for the programmer, that's not in Apple's interest because being cross-platform means that it doesn't support the latest and greatest from Apple. There's a inherent lag time in cross platform languages coming up to the API and feature parity with native languages (simply because they're third party). But Apple decided it wanted to remove that lag time so people could use its features and APIs when they released it, not 3 months later.
  • Reply 36 of 63
    I'm pretty sure the article was basically saying - Apple did an awesome job with Xcode, so they could take a lot of the work they did on Xcode and BUILD a web development app. The article wasn't saying that Xcode is going to be come an app to write HTML. Earlier comenters missed the point.



    I've been thinking this for a while, ever since I saw Dashcode and iWeb was released. Most all of Apple's iLife apps have Pro app equivalents (iMovie - Final Cut Pro, iDVD - DVD Studio Pro, GarageBand - Logic) and of course the Express versions of those programs too. iWeb is the only one that doesn't.



    Apple could build a professional version of iWeb, with an interface similar to Xcode. EVEN BETTER would be if they integrated the UI they have for Motion to make it easy to create HTML 5 animation (instead of Flash, since Motion is similar to Flash in a way). Imagine that.... a full HTML5 development suite that allows you to write code, create animation, compress videos (using QuickTime) in the proper format for HTML5 browsers, etc. Apple has all the necessary tools and software and codecs. They just need to bring it all together. Apple could be THE platform for web development if they did this. I really hope they do soon.





    (Oh, and I agree that whoever said "I take it it's too difficult to download Xcode yourself" was really REALLY rude. I hate people that comment like that.... usually you only see it in threads about Linux, when someone says something like "Is there a version of AIM for Fedora?" and the only replies are "AIM is gay. Use Gaim" and no one actually answers the question. Maybe the user has Windows and was just curious about Xcode? You never know. Just be nice.)
  • Reply 37 of 63
    anonymouseanonymouse Posts: 6,857member
    Quote:
    Originally Posted by smkudelko View Post


    I'm pretty sure the article was basically saying - Apple did an awesome job with Xcode, so they could take a lot of the work they did on Xcode and BUILD a web development app. The article wasn't saying that Xcode is going to be come an app to write HTML. Earlier comenters missed the point. ...



    Yes, I think it's pretty obviously the point given the other examples of Apple software cited and the context of those citations.
  • Reply 38 of 63
    bertpbertp Posts: 274member
    Quote:
    Originally Posted by smkudelko View Post


    I'm pretty sure the article was basically saying - Apple did an awesome job with Xcode, so they could take a lot of the work they did on Xcode and BUILD a web development app. The article wasn't saying that Xcode is going to be come an app to write HTML. Earlier comenters missed the point.



    I think you have it right. Basically, I believe Apple has paid attention to modularization, where you can add templates, i.e., build the web development app.
  • Reply 39 of 63
    mdriftmeyermdriftmeyer Posts: 7,503member
    Quote:
    Originally Posted by bartfat View Post


    The whole reason Objective-C even exists is to allow Apple to control the direction of a programming language. Let me elaborate. If Adobe or Microsoft instead controlled the language specification, then Apple would be at the mercy of those companies to be able to include new features or APIs because those languages wouldn't support them and therefore developers wouldn't be able to write those features or APIs. Now, suppose in this made-up situation, Objective-C 2.0 (as it is in its current form) suddenly appears out of Apple. Now, Apple has the ability to control what the language supports, what APIs it has, can do greater optimization for the platform (i.e. greater performance), and just better integration because there's a focus on doing a single platform well, instead of doing good (usually just okay performance) on a bunch of platforms. While cross-platform makes it technically easier for the programmer, that's not in Apple's interest because being cross-platform means that it doesn't support the latest and greatest from Apple. There's a inherent lag time in cross platform languages coming up to the API and feature parity with native languages (simply because they're third party). But Apple decided it wanted to remove that lag time so people could use its features and APIs when they released it, not 3 months later.



    The reason Objective C exists is because of Brian Cox who wanted to combine the best of Smalltalk with that of C and NeXT saw the power of this along-side their Mach Microkernel and the BSD filesystem with UFS as the base file system back in 1989.



    Java was Sun's answer to a failed Openstep joint initiative between NeXT and Sun in which they hired several Objective-C engineers who were in transition from NeXT to make their own as a best of Objective-C, better C++ and include hooks to C.



    The reason Objective-C is so useful, besides it's design is the set of Frameworks that have > 20 years of maturation and foresight into their design and implementation.



    You are correct that re-use requires a lot of experience and foresight. Apple leaves the edge cases for your application needs and in that sense, the design foresight of your edge cases up to you, the developer.



    Objective-C 2.0 added some highly demanded features which with the mature frameworks makes a lot of your investment returned back to you, but not without a solid foundation in the language and Cocoa frameworks.



    The same goes for C++ or C# and their direction of frameworks.



    Ironically, both C++ frameworks ala Qt and C# whether its Mono or Microsoft itself borrow a lot of their design patterns and the now common MVC paradigm from Apple, who back as NeXT was a rogue in the industry when Eiffel, C++/CORBA and C++/MFC were direct competitors.
  • Reply 40 of 63
    mdriftmeyermdriftmeyer Posts: 7,503member
    Quote:
    Originally Posted by lowededwookie View Post


    I completely disagree I think XCode is a perfect place to do web application development. That's what Daniel is getting at not just static HTML5 pages but MobileMe class applications.



    The place for Developing dynamic web applications was the original Cocoa/Objective-C WebObjects before they ruined it with Java.



    They could have reinvented the WOBuilder with up-to-date EOF bindings for MySQL, Oracle latest, PostgreSQL, Sybase, Informix/DB2, MSSQL and more while bringing back a fully reborn and restored Objective-C backend and WebScript [Objective-C scripting language] that includes native support for MacRuby, PHP and of course Objective-J and Sproutcore, if they wanted to go in that direction.



    With a well thought out chain of development the hooks into a platform agnostic run-time on Apache2 ala mod_apple_objc runtime for HTML5 rich applications with hooks into Apple's major back-end technologies but that would divest a lot of resources away from Native Cocoa/Cocoa Touch development and for what?



    Where is the major ROI for this kind of engineering resource allocation?
Sign In or Register to comment.