Slashdot Mirror


Four Years On, Developers Ponder The Real Purpose of Apple's Swift Programming Language (monkeydom.de)

Programming languages such as Lua, Objective-C, Erlang, and Ruby (on Rails) offer distinct features, but they are also riddled with certain well-documented drawbacks. However, writes respected critic Dominik Wagner, their origination and continued existence serves a purpose. In 2014, Apple introduced Swift programming language. It has been four years, but Wagner and many developers who have shared the blog post over the weekend, wonder what exactly is Swift trying to solve as they capture the struggle at least a portion of developers who are writing in Swift face today. Writes Wagner: Swift just wanted to be better, more modern, the future -- the one language to rule them all. A first red flag for anyone who ever tried to do a 2.0 rewrite of anything.

On top of that it chose to be opinionated about features of Objective-C, that many long time developers consider virtues, not problems: Adding compile time static dispatch, and making dynamic dispatch and message passing a second class citizen and introspection a non-feature. Define the convenience and elegance of nil-message passing only as a source of problems. Classify the implicit optionality of objects purely as a source of bugs. [...] It keeps defering the big wins to the future while it only offered a very labour intensive upgrade path. Without a steady revenue stream, many apps that would have just compiled fine if done in Objective-C, either can't take advantage of new features of the devices easily, or had to be taken out of the App Store alltogether, because upgrading would be to costly. If you are working in the indie dev-scene, you probably know one of those stories as well. And while this is supposed to be over now, this damage has been done and is real.

On top of all of this, there is that great tension with the existing Apple framework ecosystem. While Apple did a great job on exposing Cocoa/Foundation as graspable into Swift as they could, there is still great tension in the way Swift wants to see the world, and the design paradigms that created the existing frameworks. That tension is not resolved yet, and since it is a design conflict, essentially can't be resolved. Just mitigated. From old foundational design patterns of Cocoa, like delegation, data sources, flat class hierarchies, over to the way the collection classes work, and how forgiving the API in general should be. If you work in that world you are constantly torn between doing things the Swift/standard-library way, or the Cocoa way and bridging in-between. To make matters worse there are a lot of concepts that don't even have a good equivalent. This, for me at least, generates an almost unbearable mental load.

152 of 262 comments (clear)

  1. Walled garden by LynnwoodRooster · · Score: 2, Insightful

    They already have one for consumers, this just makes it easier to put one up for developers.

    --
    Browsing at +1 - no ACs, I ignore their posts. So refreshing!
    1. Re: Walled garden by Octorian · · Score: 2, Insightful

      If Swift is to be considered a 'walled garden', then so should just about every other programming language out there.

      No, just programming languages that are primarily used by a single platform, with very little real use outside of that platform, where that platform is controlled by a vendor big enough to encourage people to put up with it. In the present day, Objective-C might actually fit that definition too. Of course C# is probably an even better example of this.

    2. Re: Walled garden by Dog-Cow · · Score: 1

      Apple fully supports the Linux port, and there is an unofficial Windows port. That covers every server and desktop that matters these days. (The Windows port still needs a lot of work.)

    3. Re:Walled garden by mwvdlee · · Score: 1, Troll

      This.

      The purpose of Swift is to make it more expensive to support multiple platforms.

      --
      Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
    4. Re: Walled garden by perlstar · · Score: 1

      VS, .NetCore, and c# are all available for Linux.

    5. Re:Walled garden by Austerity+Empowers · · Score: 2

      Near as I can tell this is one of two purposes. The other purpose is that many "app" developers are not professional programmers.

      Anyway, the lack of support for C/C++ is going to hurt them in the long run, probably not even that long run. For example if they want to improve Metal adoption, they probably need to get C support out there soonest.

      There are plenty of languages out there that address one concern or another that various types of programmers have or don't want to deal with, and C/C++ support ensures that any gaps in that language can be filled with a compiled in module they can almost forget about. Swift isn't doing anything really that useful except being not-C++.

      I don't want C# or Swift, I have better ways to waste my time.

    6. Re: Walled garden by sodul · · Score: 4, Insightful

      Are you saying I can take a Swift app designed for macOS or iOS and recompile on Linux with almost no effort? If most of the frameworks are not ported as well it is not really a viable solution. For C# there is Mono and even this is not getting a huge traction beyond a few projects.

    7. Re:Walled garden by angel'o'sphere · · Score: 1

      For example if they want to improve Metal adoption, they probably need to get C support out there soonest.
      I doubt you find many macOS or iOS developers that are fluent in C - or willing to use C. Why would anyone even think about C for a desktop OS or writing Apps is beyond me ... why not write straight in assembler?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re: Walled garden by Anonymous Coward · · Score: 2, Insightful

      Is Linux a 'walled garden' since we can't take software using Linux-specific APIs like cgroups and ALSA and evdev and easily compile/run them on OSes like macOS and Windows?

    9. Re:Walled garden by Austerity+Empowers · · Score: 3, Insightful

      Most programmers aren't going to write directly against a graphics API either, but those APIs are typically consumed by big engines that are written in C/C++, for good reasons, and it is hard to write swift that calls C/C++ and vice versa.

    10. Re: Walled garden by ImdatS · · Score: 3, Insightful

      Actually, you should separate the language from (OS-specific) libraries.
      For example, we are currently developing a large-scale software consisting of various components.
      Some servers are written in GoLang and some others are written in Swift.

      The beauty is that the part that is written in Swift can be developed & tested on MacOS directly in Xcode. This server-component is written by a former iOS/macOS-developer, who knows Swift very well.

      The runtime environment is Linux. So, we develop on Linux AND macOS (depending on what each developer knows best), in Swift AND GoLang and since all server components communicate using REST-API with each other, nobody really cares which language is used - as long as it works.

      Our experience so far with developing server (or: systems-)software with Swift (4.x) is really great. The turnaround times are very short since the developer in question already knew all the Swift-quirks.

      Of course, we don't use any macOS libraries at all, only those that come with standard Swift for Linux (plus some FOSS libraries).

      When the whole system is up and running, we will evaluate both languages on performance (development- & runtime), cost, maintainability and decide whether we continue doing it in both languages or decide for one or the other.

      So, I don't really see a walled-garden here...

    11. Re: Walled garden by TheFakeTimCook · · Score: 4, Insightful

      Is Linux a 'walled garden' since we can't take software using Linux-specific APIs like cgroups and ALSA and evdev and easily compile/run them on OSes like macOS and Windows?

      Exactly this.

      So many Slashtards want to assign the epithet "Walled Garden" to ANYTHING Apple does, regardless of how much they Open Source it, or make it as platform-agnostic as possible.

      It's just ridiculous.

    12. Re:Walled garden by TheFakeTimCook · · Score: 4, Informative

      Indeed. Sell it as the next greatest thing that everybody must use and then, when everybody not too smart is on it, change is so that there is no way out, support on other platforms gets very difficult and independent implementation become non-viable. Pretty classical attack.

      And name me other Apple Open Source projects where they have employed your paranoid business plan.

      Bonjour: Open Source, and certainly not Apple-Specific.

      launchd: Open Source, and certainly not Apple-Specific.

      GCD: Open Source, and certainly not Apple-Specific.

      Webkit: Open Source, and certainly not Apple-Specific.

      Swift: Open Source, and certainly not Apple-Specific.

      OpenCL: Open Source, and certainly not Apple-Specific. (In fact, now even Deprecated by Apple).

      CUPS: Acquired by Apple, and continues as non-Apple Specific Open Source.

      LLVM: Open Source, and certainly not Apple-Specific.

      Clang: Not Apple owned, but Apple is the major contributor to the Open Source Project.

      ResearchKit, CareKit. Open Source iOS Projects that are apparently not Apple-Specific.

      Darwin: Open Source, and somewhat non Apple-Specific. ...and many more.

    13. Re:Walled garden by TheFakeTimCook · · Score: 1

      Objective-C is still a better language than Swift.

      I think even Apple would agree at this time.

      But since Objective-C was born out of Smalltalk about 1981, lets see how good Swift is in about 40 years...

    14. Re:Walled garden by rfengineer · · Score: 1

      "The other purpose is that many "app" developers are not professional programmers." I think this is the true reason. The next great "app" will come from someone who wouldn't know "big O" notation if they stepped on it. They won't care. They'll only want to create an app that addresses some issue unique to their industry/hobby. All the peripheral marketing hoopla from Apple seems to support this point of view. Once they have their app up (however broken) and are deriving a revenue stream, they can hire software minions for mice nuts to repair the problems.

    15. Re:Walled garden by angel'o'sphere · · Score: 2

      C++ objects and Swirft objects don't interact seamlessly, however writing the relevant glue code is easy to google, e.g. http://www.swiftprogrammer.inf...

      For C-APIs you don't need glue code, only Swift function definitions: https://theswiftdev.com/2018/0...

      So what exactly is your point?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    16. Re:Walled garden by Dog-Cow · · Score: 1

      You haven't made any arguments, either. Only some ridiculous accusations for which no evidence exists.

    17. Re:Walled garden by TheRaven64 · · Score: 4, Interesting

      Apple really likes to play up Objective-C as the competitor to Swift, but the elephant in the room is Objective-C++, which (since C++11) is a far better language than either. You can have the late binding of Objective-C objects and the compile-time specialisation of C++ templates and switch between them easily. With ARC, you can store Objective-C object pointers inside C++ collections and have the memory management work properly (which was the biggest irritation of pre-ARC Objective-C++). If you use C++ objects as instance variables in Objective-C, then their destructors run automatically after -dealloc, so the memory management works both ways (you can, for example, use C++11 unique_ptr or shared_ptr to manage ownership of non-Objective-C resources by Objective-C++ objects). Most importantly, it has a trivial way of using C++ libraries, something that Swift can achieve only if you wrap them in [Objective-]C.

      --
      I am TheRaven on Soylent News
    18. Re:Walled garden by Dog-Cow · · Score: 1

      What lack of C/C++ support? Swift can't bridge to C++, but it does bridge nicely to C. And all platforms which Swift supports also support C and C++. Do you have an actual argument, or are you just spouting stuff that looks technical, but makes no sense?

    19. Re:Walled garden by Dog-Cow · · Score: 1

      Calling C is trivial in Swift. Grouping C and C++ together in this respect just makes you look like an idiot.

    20. Re: Walled garden by Dog-Cow · · Score: 1

      Apple has supported Objective-C since 2000, or so (I'm too lazy to check when exactly OS X 10.0 was released).

    21. Re: Walled garden by cshark · · Score: 2

      Are you saying I can take a Swift app designed for macOS or iOS and recompile on Linux with almost no effort? If most of the frameworks are not ported as well it is not really a viable solution. For C# there is Mono and even this is not getting a huge traction beyond a few projects.

      Not no effort. Swift is available for Linux. But it's not the same. The standard library is different. No such thing as Cocoa on Linux. This is one language where platform is definitely important.

      --

      This signature has Super Cow Powers

    22. Re:Walled garden by Austerity+Empowers · · Score: 2

      This is the opposite of what is needed. If you have your favorite high level graphics engine (not necessarily Unity or Unreal, if you're a small indy), it's probably in C++, sometimes plain old C. The good ones have abstracted the underlying OpenGL/DirectX interaction, so if you want to support Metal, which you really might wish to do, you have to figure out how to call it. It's designed to be called from Swift. You're not going to rewrite your entire engine in Swift just to support OS X, which isn't the world's preferred gaming platform.

      You can write a wrapper around the objective-C bindings and get some very iffy performance. Then maybe someone follows your advice and writes their swift code around your C++ engine for some extra performance loss.

      It's not a great solution, and while it may help coddle some app developers who don't understand how computers really work, the fact is computers have not magically changed how they work and all that is being done here is adding a layer of presumptive code that you may or may not really need.

    23. Re: Walled garden by Desler · · Score: 1

      No, just like you can’t take a C application written to Win32 and compile it on Linux or MacOS. But that in no way makes C a “walled garden.”

    24. Re:Walled garden by Darinbob · · Score: 1

      Because assembler is an order of magnitude harder to write in than C, your one week task will take a month instead, and trying to fix someone else's assembler module will take many months deciphering it. Assembler is also not portable. C is extremely portable precisely because it is much more portable and has very good optimization opportunities. You will find many OSX developers who know C fluently, it's what OSX is written in.

    25. Re:Walled garden by angel'o'sphere · · Score: 1

      OS X, as the kernel, might be mainly written in C.
      However the rest is C++.

      The same argument C versus Assembler holds for C.

      Why would a sane person write in C when it can use C++ and be 4 - 5 times more productive???

      Thank you for not grasping my point, when I asked about "why not assembly" ?

      You will find many OSX developers who know C fluently
      Never met one in my life, and I know Mac OS, OS X and macOS developers in the hundreds. Perhaps you have a different definition of "fluent" though. I talk about people who not only "can write C" but are fluent in it as in a mother language. Everyone like that is using C++ ... why the funk would I drive a Beatle when i can choose between a jaguar E-Type and a Porsche instead?

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    26. Re:Walled garden by angel'o'sphere · · Score: 1

      There is no performance loss when I call a C/C++ game engine from Swift. Why would there? The game engine does not know "uh1!!! it is not C++ calling me!!! uhh, now I have to be slower, because I hate being called by Swift code"

      I guess you are not a programmer, or you would know such things.

      Same for Metal, the engine does not know if I call it from C++ instead of Swift ...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    27. Re:Walled garden by Pseudonym · · Score: 1

      why the funk would I drive a Beatle when i can choose between a jaguar E-Type and a Porsche instead?

      A VW Beetle gets twice the mileage of an E type, and probably costs a shitload less to insure and maintain, too. It can't go as fast but you're bound by speed limits most of the time anyway.

      Software isn't the only business where people use more expensive solutions just because they look cooler.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    28. Re: Walled garden by rthille · · Score: 1

      Apple acquired NeXT on December 20, 1996, so you could say it's been from then since they continued to support NeXT products for a while at least.

      --
      Awesome furniture, accessories and cabinetry in Santa Rosa, CA: http://humanity-home.com/
    29. Re:Walled garden by Austerity+Empowers · · Score: 1

      Now you're just trolling. First you insist on an argument about calling C/C++ from Swift, which is the least interesting topic, performance wise. Step one is to get your C or C++ based engine to call Apple's libraries, either via swift or objective c. That accomplished you can then call C/C++ from your preferred language, whatever it is. I will not assume swift because outside of iOS/OSX I just don't see the interest. I see a lot of python calling C these days.

      I agree with you to the extent that calling C from just about anything does not need to bring on overhead. C is the most minimal option out there short of writing assembly code, and thus calling libraries with C calling conventions would not invoke any overhead that isn't brought on by the language you call it from. C++ is worse, and can be quite not-ideal if you designed your class hierarchy poorly, but again is as minimal as object orientation gets. What you choose to run from that part is your business, and I'm not going to tell you it's right or wrong.

      And second, you're wrong. Absolutely there is a performance hit if, to call a module in another language, with different calling conventions, more code is injected. And that happens calling objective C where, for example, method calls generate an objc_msgSend (or variant); a function which stands in place of the desired function. Possibly not a big deal depending on your object hierarchy, or when making very infrequent high level calls, it absolutely is important in a performance critical inner loop. Objective C does not have to "dislike" being called by C, it is simply less efficient. That necessarily has to be built into your binary when calling obj-c libraries.

      Having learned swift just enough to see how objects and methods work, there is no question that if I call it from C or C++, there's going to be substantial overhead to obey the calling convention that swift must need to do what it does in all but the most trivial case of a static function with no arguments. I don't think anyone has data to measure the performance overhead here since there is not yet any easy way to do this. My argument is simply this: why even have this conversation? It's virtually certain that the Metal libraries were written in C, that's what systems programmers continue to use precisely because it is low level. So expose the API as standard C. Tie a nice bow around it in ObjectiveC/Swift for those devoted to those languages, and let's stop arguing about it.

    30. Re: Walled garden by Tough+Love · · Score: 1

      Well, the problem is, Apple does build real walls around its gardens, these are no accident. You are only quibbling over which of Apple's walls are real.

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    31. Re: Walled garden by Tough+Love · · Score: 1

      The turnaround times are very short since the developer in question already knew all the Swift-quirks.

      What if that developer gets hit by a bus or gets a higher offer elsewhere?

      --
      When all you have is a hammer, every problem starts to look like a thumb.
    32. Re:Walled garden by Anonymous Coward · · Score: 1

      WebKit's HTML and JavaScript code was originally a fork of the KHTML and KJS libraries from KDE,
      https://web.archive.org/web/20150209072938/http://lists.kde.org/?m=104197092318639

    33. Re: Walled garden by TheFakeTimCook · · Score: 1

      Well, the problem is, Apple does build real walls around its gardens, these are no accident. You are only quibbling over which of Apple's walls are real.

      Um, isn't that kind of the point?

    34. Re:Walled garden by angel'o'sphere · · Score: 1

      And second, you're wrong. Absolutely there is a performance hit if, to call a module in another language, with different calling conventions, more code is injected.
      No, there is not. For the caller it is completely irrelevant how the calling convention is. It does not matter if I push arguments from left to right or from right to left on the stack and then do a jump subroutine to the routine.

      Calling between different languages is only expensive if one is running in an Interpreter/VM and the other is nativ AND you want to have an option to call back.

      I see no reason why calling C++ from Swift or other way around should have any performance issues, but I never dug into it, if you have examples I'm eager to see them.

      It's virtually certain that the Metal libraries were written in C For you it is certain, because you seem to love C :P

      Metal is mainly written in a language called "Metal Shader Language" which is based on C++ 14: https://developer.apple.com/do...

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    35. Re:Walled garden by angel'o'sphere · · Score: 1

      The car analogy was about speed, which was obvious.
      And in this case: speed of development.

      If you can solve a programming problem in a low level language faster than in a high level language, the problem is either trivial our your skills in the high level language are not on par with your skills in the low level language.

      No need to get into coolness ... C was cool 1985 ... since we have C++98 C is no longer cool, it is outdated and only recommended for niches and for places where you have no C++ compiler or have good reasons, like space on the device, not to use it. But then again: you can program C++ 17 in a way that you nearly have no space overhead versus C anyway.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    36. Re:Walled garden by Pseudonym · · Score: 1

      The car analogy was about speed, which was obvious.
      And in this case: speed of development.

      My response, in case it wasn't obvious, is that everything in this business is a tradeoff.

      Yes, even C vs C++; a library with a C API is always more useful than one with a C++ API.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    37. Re:Walled garden by angel'o'sphere · · Score: 1

      Yes, even C vs C++; a library with a C API is always more useful than one with a C++ API.
      And why would that be the case? Because you "hate oo"? Show me a java library that has a C-API ... your claim makes no sense. (Or a Python library or a LUA or a Scala or a Lisp one ...)

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    38. Re:Walled garden by Pseudonym · · Score: 1

      Find me a C++ library that can be called from Java directly without wrapping it in a layer of C.

      Most languages with a foreign function interface can call C natively. Fewer can call C++ natively.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    39. Re:Walled garden by angel'o'sphere · · Score: 1

      That was not the point, or was it?
      Anyway, if your API is C, it is obviously not object oriented. So it is pointless most of the time anyway.
      If you really need to call C++ from Java, there are old IBM projects, that generate the glue code for you (You can even subclass Java from C++ and other way around)
      In modern times you probably would use https://code.google.com/archiv... or other JNA based approaches.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    40. Re:Walled garden by Pseudonym · · Score: 1

      That was not the point, or was it?

      That was my point. A C API is more reusable.

      Anyway, if your API is C, it is obviously not object oriented.

      Which means an even lower impedance mismatch when trying to use it with a language which has a different object model, as anyone who has mixed C++ and Obj-C can tell you.

      LLVM features a hand-curated C binding for precisely this reason.

      --
      sub f{($f)=@_;print"$f(q{$f});";}f(q{sub f{($f)=@_;print"$f(q{$f});";}f});
    41. Re:Walled garden by angel'o'sphere · · Score: 1

      Ah, you want to say, if the API is in C, more languages can bind to it.
      That does not make it 'mode reuseable' :)

      If you want to mix Obj-C with C++, you simply should use the Obj-C++ compiler.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
  2. Real purpose: lock-in by b0s0z0ku · · Score: 3, Insightful

    Apps written in different languages are hard to compile across platforms.

    1. Re:Real purpose: lock-in by angel'o'sphere · · Score: 1

      The problems are not the languages but the UI Frameworks (and Filesystem and Network Access).

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    2. Re:Real purpose: lock-in by ausekilis · · Score: 1

      Mac OS is based on one of the BSD's... it should just be POSIX-compliant. That's WHY we have standards.

    3. Re: Real purpose: lock-in by reanjr · · Score: 1

      ABIs are largely irrelevant with open source, so languages without large communities of developers working inside walled gardens don't prioritize that.

    4. Re:Real purpose: lock-in by Anonymous Coward · · Score: 1

      And how does Swift differ from Objective C in that regard? Both are open language specifications, with open source reference implementations.

      Lock-in has nothing to do with it - every single platform is "locked in" due to legacy baggage. Apple chose to continue the path they chose in 1996 of using NeXTSTEP/OpenStep, and it remains the core of their OS. Microsoft has chosen to stick with their own code/legacy: The Windows platform.

      Google was in an interesting place where it could have chosen to use existing and open platforms (OpenStep/GNUStep, Moblin, and Maemo/MeeGo). There was a clear path where Google could move forward with existing projects and make a de-facto standard. Maemo (later MeeGo) was built on already existing cross-platform projects including GNOME, Qt, and Debian Linux.

      Google didn't choose that path, and instead bought Android, Inc, and continued to develop that platform. Much like Apple and Microsoft, Google chose to support a platform which they can control by fiat.

    5. Re: Real purpose: lock-in by Dog-Cow · · Score: 1

      You can open source iOS apps, and you have closed source on Windows and Linux. The two are orthogonal. And the benefits of ABI come with the libraries. Specifically, the ability to ship standard or common libraries with the OS, and expect that apps will be able to use them. Even glibc relies on ABI compatibility.

    6. Re:Real purpose: lock-in by Desler · · Score: 1

      POSIX doesn’t define a UI toolkit. So your post is essentially meaningless.

    7. Re: Real purpose: lock-in by Darinbob · · Score: 1

      ABIs are very important if you're going to be portable, or you want to interact with third party tools like debuggers and linkers, or link to third party libraries.

    8. Re: Real purpose: lock-in by reanjr · · Score: 1

      But if you have the source code, portability is as easy as recompling. You don't need an ABI for that. The other benefits of an ABI you mentioned are not compelling enough for many language developers. Swift needs it because it operates in a closed source world with Objective-C. It's common to need to interact with systems level code in C, but it's rare to have to interact that deeply with - say - a web server written in Python. So unless you are developing a systems language, an ABI is not high on the priority scale. Most likely the language already has various mechanisms to accomplish the same thing within the stack, and interop with other languages is usually already well supported by web services or IPC or some such thing.

    9. Re: Real purpose: lock-in by reanjr · · Score: 1

      Sure, but that systems level code can be written in whatever language you want, like C. Systems code needs an ABI, but it's rare to need anything like that in higher level langs like Swift. It's just not a priority for most languages because there usually higher level mechanisms built in to accomplish the same thing for 99% of the real world cases.

    10. Re: Real purpose: lock-in by Darinbob · · Score: 1

      You need the ABI to be fixed before inter-language linking will work. Ie object file linking to object file or library. You will not always have full source code to all the stuff you need to link to. Both sides have to agree on how the stack is layed out, what register usage shall be, and so forth.

      And the tools matter. GCC, binutils, and gdb are dropping support for the ABI that was chosen naively a decade for the project I'm on, and it's not trivial to just switch to the more commonly used format (ARM EABI) because of other naive decisions like assuming a particular layout of structures or the use of bitfields. Stuff almost no one does after having some experience in porting software to different types of architecture. It really is a good idea to use a standardly used ABI for your architecture.

      Yes, on a systems language, doing real programming that touches the hardware, not a scripting language like on the web. Even if you're using Python or such, the people who actually write those languages have to comply with the ABIs under the hood.

  3. fr0sted PI55 by Anonymous Coward · · Score: 1, Funny

    That's what you get for coding with Apple's proprietary garbage language instead of a standards-compliant one like C or VBA.

    1. Re:fr0sted PI55 by david.emery · · Score: 4, Interesting

      Please identify the (de-jure) standard for VBA. "Microsoft's current compiler" is not a -standard-.

    2. Re:fr0sted PI55 by Anonymous Coward · · Score: 1

      VBA? VBA??

      Of all things you could've chosen, why are you bringing up *that* turd?

    3. Re:fr0sted PI55 by TheFakeTimCook · · Score: 1

      That's what you get for coding with Apple's proprietary garbage language instead of a standards-compliant one like C or VBA.

      You're calling VBA "Standards-Compliant"?!?

      Ok, I think we're done now.

    4. Re:fr0sted PI55 by ath1901 · · Score: 1

      I haven't seen such a nicely crafted old-school troll post in a long time. Well done!

  4. The one language to rule them all by OneHundredAndTen · · Score: 1

    Like the many languages that have unsuccessfully tried to do that over the decades. Jack of all trades, master of none.

    1. Re:The one language to rule them all by TeknoHog · · Score: 3, Funny
      --
      Escher was the first MC and Giger invented the HR department.
    2. Re:The one language to rule them all by hackertourist · · Score: 1

      That's been quoted here so often I now recognize it by number. (mod guideline: -1, painful truth)

    3. Re:The one language to rule them all by SoftwareArtist · · Score: 1

      But Swift does a really good job of it. It's not a perfect language for everything, but it's a really good language for a lot of things. People keep inventing new languages because we keep learning more about how to design good ones.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
  5. You're looking in the wrong place... by QuietLagoon · · Score: 3, Insightful

    Don't look for reasons why Swift may be technically superior. Look for reasons why Apple wants Swift to keep developers locked inside the Apple world. Every minute that a developer uses to learn Swift, is a minute not spent on learning a non-Apple technology.

    1. Re:You're looking in the wrong place... by Maury+Markowitz · · Score: 1

      > Every minute that a developer uses to learn Swift, is a minute not spent on learning a non-Apple technology

      And that was true of Obj-C for the last 30 years, so... yeah, solid argument there.

    2. Re:You're looking in the wrong place... by QuietLagoon · · Score: 1

      ...And that was true of Obj-C for the last 30 years, so... yeah, solid argument there....

      Obj-C was not developed by Apple. It was used by Apple (and, btw, NeXT), but it was developed separately from Apple by StepStone.

    3. Re: You're looking in the wrong place... by QuietLagoon · · Score: 1

      ...What a dumb argument. That applies to most other programming languages, too....

      Except that Swift is Apple's language. Duh. :)

    4. Re:You're looking in the wrong place... by Dog-Cow · · Score: 1

      Can you name a platform that has an Objective-C compiler today, and not a Swift compiler? An original NeXTstation, I guess.

    5. Re:You're looking in the wrong place... by Anonymous Coward · · Score: 2, Informative

      gcc has an Objective-C compiler. It’s just as standard as the C and C++ compilers, though your package manager almost certainly have it as a separate package from the C and C++ compilers (which are, themselves, also usually separate).

      It’s not particularly difficult to get your hands on an Objective C compiler.

    6. Re:You're looking in the wrong place... by TechyImmigrant · · Score: 3, Informative

      ...And that was true of Obj-C for the last 30 years, so... yeah, solid argument there....

      Obj-C was not developed by Apple. It was used by Apple (and, btw, NeXT), but it was developed separately from Apple by StepStone.

      Because Apple used Pascal, then extended it to object pascal. Then people wanted C, but they needed object semantics to port the object pascal libraries and C++ wasn't ready and was ugly as sin, so they went with Objective C, which is uglier. They were swept along with the stream like everyone else.

      The real problem with Swift is not the language, it's that when you try to use swift to program a mac or iphone, you spend most of your programming time interacting with the libraries in arbitary ways invented by Apple and every example on the internet seems to be written in Objective-C. You're left guessing at what the Swift equivalent would look like.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    7. Re:You're looking in the wrong place... by angel'o'sphere · · Score: 1

      Why do people write such nonsense?

      How can a developer be locked in? If I'm payed to write software for Apple OSes ... why would I care that "I'm locked to Swirft"? Next year I write software for Linux and use C++ and Qt ... wow, that was easy.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    8. Re:You're looking in the wrong place... by angel'o'sphere · · Score: 3, Informative

      Every linux distro that installs the gcc suit has an objective-C compiler ...
      And if you really want to: a Switft compiler to, directly from swift.org: https://swift.org/download/

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    9. Re:You're looking in the wrong place... by QuietLagoon · · Score: 1

      ...why would I care that "I'm locked to Swirft"?...

      You don't need to care, Apple does. If you are writing for Swift, that is time you are not honing your skills in, or learning, other languages. Unless, of course, you've figured out how to tap into your other selves in the multi-verse...

    10. Re:You're looking in the wrong place... by squiggleslash · · Score: 1

      Yeah, but Apple is the only entity that still controls platforms based upon it. The only other entity I'm even aware of that uses Objective C is the GNUstep project, which is trying to replicate Apple's APIs.

      So the GP is right. Nobody claimed Apple developed it, the claim is that it's essentially a technology that, if you use, you'll be locked into Apple's ecosystem.

      That said... I don't know that this is the purpose of Swift. The language itself is fairly open, and it came about at about the same time as Rust and Go and others were being taken seriously. I think Apple developed it at a time they didn't feel there were any strong alternatives.

      --
      You are not alone. This is not normal. None of this is normal.
    11. Re:You're looking in the wrong place... by StormReaver · · Score: 4, Insightful

      How can a developer be locked in?

      It will become self-evident to you after you have written your first major application in a platform-specific language and/or environment that you want to make available on some other platform.

      Until then, I will provide you with the most common scenario:

      You are a company or independent developer who has unwisely decided to write thousands, tens of thousands, hundreds of thousands, or millions of lines of code which uses a vendor-specific language. You are happy with your product, and you are happy with your vendor. All is good in your world. You have spent a huge amount of time and money on making your products, and you can't afford to do it all again from scratch. But you're okay with that, because your vendor is AWESOME, and you just can't foresee a reason why you would ever leave such an incredible experience.

      You become disillusioned and/or pissed off with your language vendor (for whatever reasons; they don't matter for this discussion. Just know that it happens a lot), so you decide, "screw them! I'm out of there!" But, oops! You have written yourself into an intractable dependency on that vendor, because you didn't have the experience to understand how vendor lock-in works. You don't have the resources to rewrite from scratch, so you wind up having to surrender yourself to the whims of your vendor.

      You plead with your vendor to be reasonable, but your vendor DOES have the experience to know how vendor lock-in works. So not only does your vendor ignore your pleas for mercy, but they raise their prices and/or make more unreasonable demands of you that you have absolutely no power to fight. You find yourself with no choice but to either cave to your vendor's demands, or go out of business.

      You realize too late that had you used cross-platform technologies from either the very start, or at least switched to cross-platform technologies early on, you could have told your scumbag vendor to piss off; and then you could have found a different vendor to support you.

    12. Re:You're looking in the wrong place... by TheFakeTimCook · · Score: 1

      Don't look for reasons why Swift may be technically superior. Look for reasons why Apple wants Swift to keep developers locked inside the Apple world. Every minute that a developer uses to learn Swift, is a minute not spent on learning a non-Apple technology.

      Um, Swift is Open Source.

      How does that lock ANYONE in to an "Apple World"?

      You stupid Haters REALLY need to think before posting your stupid, imbecilic drivel.

    13. Re:You're looking in the wrong place... by TheFakeTimCook · · Score: 1

      ...And that was true of Obj-C for the last 30 years, so... yeah, solid argument there....

      Obj-C was not developed by Apple. It was used by Apple (and, btw, NeXT), but it was developed separately from Apple by StepStone.

      Yeah, for awhile, then it was licensed by NeXT in 1988, who extended the language a bunch, then it was transferred to Apple when Apple acquired NeXT.

      It is currently listed as being owned by Apple.

    14. Re:You're looking in the wrong place... by TheFakeTimCook · · Score: 1

      Yeah, it is true that Objective-C was also a lock-in language, but Obj-C itself is behind the times. Most userland is moving to managed code, and even Apple couldn't keep programmers away using a 30-year old outdated language. So Apple needed - and created - a new lock-in languages. It's called Swift.

      Yeah, they're Lock-In Languages, alright.

      Objective-C is part of the gcc compiler.

      Swift is Open Source and already has ports in Linux and Windows.

      Sounds Locked-In to me.

      Idiot.

    15. Re:You're looking in the wrong place... by EMB+Numbers · · Score: 3, Informative

      You have your history completely wrong.

      Objective-C was created by Dr. Brad Cox in the Mid 1980s - https://en.wikipedia.org/wiki/...
      Objective-C is a mashup of ANSI C and Smalltalk. Smalltalk is the original Object Oriented programming language created by Alan Kay in the 1970s. Alan Key coined the term, "Object Oriented", to describe Smalltalk. He later said, "I coined the term Object Oriented, and I promise, C++ is not what I had in mind." He has also said he wished he called Smalltalk "Message Oriented" because messages are the key, not objects.

      Steve Job's NeXT Computer Corp. used Objective-C to create NeXTstep graphical frameworks currently known as Cocoa (Foundation Kit, App Kit, etc.) and Cocoa Touch (UIKit etc.) NeXTstep shipped commercially in October 1988.

      Apple purchased NeXT in December 1996, and NeXtstep eventually became Mac OS X and iOS.

    16. Re:You're looking in the wrong place... by angel'o'sphere · · Score: 1

      Apples does not care about that.

      If at all a programmer cares ... because it is his job future that is at stake. Apple does not care if you switch from Mac/iOS development to Android/Linux/Windows ... aka C/C++/Java. It is completely irrelevant for them what a single developer or a group of developers does.

      If you are (1)writing for Swift, that is time you are not (2)honing your skills in, or (3)learning, other languages.
      Get a clue. What are you doing? Writing a program (1) for profit?, honing your skills in another language (2), or learning a new language (3)?

      While I'm _writing_ a Java program I'm most certainly not honing my Swift knowledge. However you can exchange any language here and the sentence is always true, So what the funk is your point?

      I _by definition_ don't learn another language (3) while I'm writing software (1) in a different language.
      Again you can exchange both languages on both ends and the sentence is always true.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    17. Re:You're looking in the wrong place... by TechyImmigrant · · Score: 1

      >You have your history completely wrong.

      Not at all.

      I'm talking about Apple's adoption of languages. If you are of a certain age, you will remember a time before NeXT, before SJ left Apple when there were Apple ][s, Apple //es, Lisas, Early Macintoshes. At no point did I claim that Apple invented these languages. Why are you implying I did? Why is the name of the creator of Objective C relevant to my statements about Apple's adoption of Objective C?

      You may be 12 years old and so were not around when these things happened. Some of us are older and remember it well.

       

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    18. Re:You're looking in the wrong place... by angel'o'sphere · · Score: 1

      You do realize you are contradicting yourself?

      Either I'm happy with my product and sell it good, and hence I'm not (yet) affected by vendor lock in, or I'm not, then I switch immediately.

      If I'm happy I make so much money that I can rewrite the software anyway, so: "the I don't have the resources" scenario can actually not happen.

      Then again: it is the customer who decides. If the customer runs only Macs, I have to write for Macs, plain and simple.

      Regarding the topic: you can easily write software for Macs in C/C++, Java, JavaScript and dozens of other niche languages like Lua. There is no vendor lock in. The vendor lock in is the UI Framework!!! Not the language. Swift cross compiles to Java, Linux, Windows anyway.

      And then again: if you have a majour software undertacking, only about 30% of its costs is "coding" ... and you only have to port that part to another language if you wanted to port. 50% of that or more can be automated.

      or at least switched to cross-platform technologies early on, you could have told your scumbag vendor to piss off
      That worked very well for Zapp, until it got bought by Rogue Wave and suddenly was Windows only, and the Mac port never got published.

      --
      Cost free eBook I read (by iBook/Kobo/Amazon/ObookO/Gutenberg etc.): "The Green Odyssey" by Philip Jose Farmer.
    19. Re:You're looking in the wrong place... by TheRaven64 · · Score: 2

      Clang supports all of the features of Objective-C on all *NIX platforms and Windows. The GNUstep Objective-C runtime, in combination with clang, supports a superset of the language features of Apple's implementation and is used by Microsoft in their Windows bridge for iOS. You might be surprised at some of the places Objective-C ends up - there are quite a few larger (mostly non-Web, though there are also things like SOGo) server systems that use Objective-C - I've consulted for a couple of companies that maintain them.

      --
      I am TheRaven on Soylent News
    20. Re:You're looking in the wrong place... by Dog-Cow · · Score: 1

      "No" is a lot easier to type.

    21. Re:You're looking in the wrong place... by Dog-Cow · · Score: 1

      Object Pascal was Borland's dialect of Pascal.

    22. Re:You're looking in the wrong place... by Dog-Cow · · Score: 1

      Just because no one else is doing serious development with ObjC does not mean you are locked in. The clang compiler is part of the LLVM suite, and is available on every platform that the rest of LLVM is available on. Nothing is stopping anyone from creating ObjC libraries on non-Apple platforms.

    23. Re:You're looking in the wrong place... by guruevi · · Score: 1

      Every single platform has an Objective-C compiler. Just because it's not in VisualStudio doesn't mean it doesn't exist.

      --
      Custom electronics and digital signage for your business: www.evcircuits.com
    24. Re:You're looking in the wrong place... by TechyImmigrant · · Score: 1

      Yes. I once though it would be a good idea for them to adopt beos. I used BeOS back in those days, but now the unix like underpinnings of macos is a lot better.

      The transition from the Apple dialect of object pascal did indeed happen as a result of the NeXT transition. That's just more historical detail. They did transition from pascal -> object pascal -> Objective C -> Switft.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    25. Re:You're looking in the wrong place... by Anonymous Coward · · Score: 1

      You said "C++ wasn't ready and was ugly as sin, so they went with Objective C,"

      You are implying that Apple made the decision to go with Objective C. This is wrong, they did not. They went with NeXTstep which they acquired and Objective C was part of that. (In other words, they chose NeXTstep, not Objective C. Objective C was just part of that package.)

      Either you wrongly think Apple created NeXTstep and made the decision then; or your writing isn't very good and you should have clarified who 'they' are.

    26. Re:You're looking in the wrong place... by SoftwareArtist · · Score: 1

      You realize too late that had you used cross-platform technologies from either the very start, or at least switched to cross-platform technologies early on, you could have told your scumbag vendor to piss off; and then you could have found a different vendor to support you.

      Swift is cross platform. You can use it on Windows, Linux, even Android. The compiler is open source. You can get support from anyone who has the experience to provide it. You're no more locked in than with any other language.

      --
      "I'm too busy to research this and form an educated opinion, but I do have time to tell everyone my uninformed opinion."
    27. Re:You're looking in the wrong place... by TechyImmigrant · · Score: 1

      You're pointing out arrows of causation that I said nothing about.

      Neither NeXT, nor Apple, nor anyone was adopting C++. C++ at the time wasn't ready while ObjC was.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    28. Re:You're looking in the wrong place... by _merlin · · Score: 1

      Apple never provided Objective-C for Mac before acquiring NeXT. MPW included a Pascal compiler, and later C and C++ compilers. At some point they switched their 68k C/C++ compilers to an implementation licensed from Symantec and dropped the Pascal compiler. They were late to get PowerPC compilers ready for MPW, so Metrowerks CodeWarrior stole the market.

    29. Re:You're looking in the wrong place... by _merlin · · Score: 1

      They dropped Pascal before MacOS 9 - it was just C/C++ at that point. Pascal never really made it across to PowerPC.

    30. Re:You're looking in the wrong place... by mfearby · · Score: 1

      Exactly. I got sick of all the breaking changes in Swift and have abandoned Apple development (though my two apps are still in the store; I might let them live another year, perhaps, then pull the plug). I'm learning Java now.

  6. I'm out by ReneR · · Score: 2, Insightful

    After writing an entire application stack in Obj-C / Cocoa (ExactScan, OCRKit, ...) we will not continue using Apple only technology. To much vendor lock in, too much extra work porting and sharing code with other platforms. Yes, Swift may be partially vendor neutral, however all the Cocoa / AppKit / UIKit et al. APIs do not help, and Swift is otherwise not too native on Linux and Windows.

    1. Re:I'm out by lhunath · · Score: 3, Interesting

      It is pretty hard to avoid vendor lock-in due to APIs nowadays.

      And of all the languages, I daresay Swift is one of the few that's in a clear direction heading away from vendor specificity and toward open access.

      --
      ``OK, so ten out of ten for style, but minus several million for good thinking, yeah?''
    2. Re:I'm out by Dog-Cow · · Score: 1

      How is it not "native" on Linux? The toolchain creates native binaries, and Swift can interop with C, including the clib, just fine. There's no pre-existing UI toolkits, but that's hardly Apple's fault. Not as if Apple wrote UI/AppKit just for Swift, after all.

    3. Re:I'm out by DarkOx · · Score: 1

      Swift is otherwise not too native on Linux and Windows.

      What exactly is native? I mean being native on Windows / Linux means being C/C++ or on Windows .Net thanks to a pretty herculean effort by MS to provide very complete platform integration (and you still have to call into even first party C/C++ libraries sometimes to get some things done effectively).

      As to Python / Ruby neither can do anything at all natively other than file and socket operations. Both do offer good web stacks probably because socket operations were easier than doing any kind of native interface support. Pretty much anything else means calling into some C/C++ library and despite a lot effort one could level the same arguments the article makes about Swift at them. Try using GTK from either - hint you find you have to write code that does not look very much like what you would normally do in Ruby or Python its not that authors did not try hide the C-isms its just the paradigms don't match and there is only so much you can do. You will run into the same issues if you try to use any media encoding/decoding code etc. if its not file i/o, sockets, and maybe database access or web services it won't feel very native.

      Then there is the Java approach which is just ship an entire platform basically - UI toolkits, database drivers, etc solution to the problem - that shifts the issue though now it feels less native to the user, even if its all uniform and orthogonal to the developer. I

        think the simple reality is that its kinda like how the width of rail-road track impacts the space shuttle. The track determined the size of the tunnel, the tunnel determined the size of an aluminum tube you can put on rail car, which constrained the size and shape of rocket booster, which in turn partly dictated the size of the shuttle. Same deal platform language semantics have effects all the way down to the pointy clicky UI. So when you go back and start doing stuff in some other language you still are dealing with structures defined by the platform language and in a lot of cases those were chosen not from a purely data science perspective but because they were comfortable to work with in the native language.

      --
      Repeal the 17th Amendment TODAY! Also Please Read http://www.gnu.org/philosophy/right-to-read.html
    4. Re:I'm out by Arkham · · Score: 1

      After writing an entire application stack in Obj-C / Cocoa (ExactScan, OCRKit, ...) we will not continue using Apple only technology. To much vendor lock in, too much extra work porting and sharing code with other platforms. Yes, Swift may be partially vendor neutral, however all the Cocoa / AppKit / UIKit et al. APIs do not help, and Swift is otherwise not too native on Linux and Windows.</quote>
      &#16;
      After writing an entire application stack in C#/.NET we will not continue using Microsoft-only technology. To much vendor lock in, too much extra work porting and sharing code with other platforms. Yes, C# may be partially vendor neutral, however all the .NET / Win32 et al. APIs do not help, and C# is otherwise not too native on Linux and macOS.

      --
      - Vincit qui patitur.
  7. Bottomline == Maintainable by ElitistWhiner · · Score: 4, Insightful

    The only criteria that's relevant if you're already supporting a profitable application on either iOS or OS X platforms - maintainable. How fast does a language enable the rev of your code base, does it abstract your code base above platforms and can its libraries and API's bridge between manufacturer hardware swaps and recompiles without cost of a total rewrite.

    Those were lessons learned during NeXT transitions from little to big endian and Mac OS X revs that Apple made 3X/yr during SteveJobs reign.

  8. Swift made us dump our in-house iOS group by Anonymous Coward · · Score: 2, Informative

    Working for a well known chip company here. I'm one of the DB guys. I know we dumped out in-house iOS team when the whole "port to Swift" BS started. Management took one look at the cost and out-sourced the lot to east Europe.

    1. Re:Swift made us dump our in-house iOS group by TheFakeTimCook · · Score: 1

      Working for a well known chip company here. I'm one of the DB guys. I know we dumped out in-house iOS team when the whole "port to Swift" BS started. Management took one look at the cost and out-sourced the lot to east Europe.

      Mmmm. Bet that is going just peachy.

      Stupid PHBs.

    2. Re:Swift made us dump our in-house iOS group by Altus · · Score: 1

      Why on earth would you rush to port your entire existing app to swift? The languages interoperate pretty well.

      --

      "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

    3. Re:Swift made us dump our in-house iOS group by Lord_Jeremy · · Score: 1

      Funny you mention this. I just was at WWDC (Apple’s annual developer conference) for the 6th year in a row and I suddenly noticed that a LOT of the devs I was meeting are from Ukraine.

    4. Re:Swift made us dump our in-house iOS group by Altus · · Score: 1

      Which is also horseshit. Yeah your app gets removed if you don't update it to support new deveices and there are moving minimum standards but converting your app to swift is not on of those. As an iOS developer, I'm not aware of any feature that you can only access in swift and certainly not one that is required for staying in the store but even if their was, swift and objc interoperate. Maybe you would have to write a class or 2 in swift to support some new bling (that wasn't available to your app before at all) but you don't have to re-write your entire app to do it.

      Yeah, apple forcing you to adapt to new phones and features means you have to keep actively developing software to stay on the store... for some developers that might be an annoyance and it may not be worth updating an old app that isn't making you money. But that has nothing to do with swift vs objective c.

      --

      "In America, first you get the sugar, then you get the power, then you get the women..." -H. Simpson

  9. Oh please. by Anonymous Coward · · Score: 5, Insightful

    Firstly itâ(TM)s not lock in any more than objc is. No other (serious) platform uses objc. So stop whining about lock in. Programmers on the Apple platforms donâ(TM)t give a crap about that anyway. Weâ(TM)re there because we want to be. And most of us learned objc after learning other languages, because the iOS sdk hasnâ(TM)t been around forever, so we all came from other languages. We arenâ(TM)t so stupid we canâ(TM)t learn something else, kthx.

    Secondly it addresses some real pain points from objc. One is verbosity. Another is the fact that nil objects donâ(TM)t crash the app which makes bugs hard to find. Inconsistent message vs function call syntax. Inconsistent property vs method syntax. I could go on and on.

    Thirdly it addresses type safety. Objc will let you have an array of id, which is like having an array of java.lang.Object and trusting the programmer to use it appropriately. Anyone who argues that strong type safety isnâ(TM)t better has never worked outside of some niche application. This is enough of a pain point with objc that it deserves its own paragraph.

    Fourthly it brings functional programming to the table better than objc. Yes you can pass blocks around in objc but itâ(TM)s syntactically painful where as Swift makes it easy (aka first class citizen).

    I could continue but Iâ(TM)m tired of typing on my phone. The point is there actually are plenty of real world gains in Swift.

    Outside of /. where everyoneâ(TM)s mind is already made up and Apple is the devil, I donâ(TM)t know anyone that has used swift for real who doesnâ(TM)t think itâ(TM)s massively superior to objc.

    Is it finalized? No. Itâ(TM)s a language in flux and theyâ(TM)re taking community feedback too. So everyone is an early adopter by definition and they expect some upgrade pain. Itâ(TM)s really not that bad in practice and Xcode handles 90% of it. Itâ(TM)s no worse than switching to a new iOS version and dealing with depreciations every year.

    Again, weâ(TM)ve all chosen the platform and the language because we think itâ(TM)s superior. We arenâ(TM)t stupid. We arenâ(TM)t locked in. We all know other languages. Thanks.

    Cue the haters.

    1. Re:Oh please. by slickwillie · · Score: 5, Funny

      "I could continue but Iâ(TM)m tired of typing on my phone."

      Thâ(TM)at woâ(TM)rks ouâ(TM)t siâ(TM)nce Iâ(TM)m tiâ(TM)red oâ(TM)f râ(TM)eading iâ(TM)t.â(TM)

    2. Re:Oh please. by TimMD909 · · Score: 1

      Itâ(TM)s hard tâ(TM)o take youâ(TM)re argument serioâ(TM)usly â(TM)with all reminâ(TM)ders that Apple doesnâ(TM)t give two shits about â(TM)â(TM)interoperabilityâ(TM)â(TM).

    3. Re:Oh please. by JesseMcDonald · · Score: 1

      You're really blaming the wrong party here. Sure, Apple is replacing normal quotes with "smart" quotes, which not everyone prefers for various reasons. By itself, however, that would be a minor issue, and at least they are following the Unicode standard. The way those smart-quotes are mangled is not Apple's fault; that's entirely due to Slashdot. Between the ongoing failure to handle Unicode properly and the persistent lack of IPv6 support, Slashdot is falling remarkably behind the times for a tech-focused site.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    4. Re:Oh please. by Dog-Cow · · Score: 1

      Apple said from day one that Swift would not remain source compatible until Apple says that Swift will remain source compatible. Apparently, everyone in the world except you got the message.

  10. Swift is not alone by what+about · · Score: 5, Insightful

    There is a pattern and it is like this
    - School do not teach anymore why things are done the way they are, the reasons
    - Students are not interested, have low attention span, generally consider the teaching "old stuff"
    - Computer science is populated by freshers, you are old at 40

    the result is:
    - Reinventing the same solution, worse

    How to stop this total waste of time,money ?
    - Keep older developer around and when they say that the "new shiny idea" has been done before, listen to them.

    A list of already done things:
    1) AI (in the current form), it is Neural net, learned 30 years ago, yes, now you have a supercomputer on desk but it is not new tech and has all the same issues it had before.
    2) Blockchain, can anybody think of a revision system ? GIT, SVN ?
    3) Languages, lots of them, really, are we so dumb that to save a few keystrokes we produce something that is obscure after the third line ?
    Can we agree that all possible logic and consistency tests should be done at "compile time" ? (no Unit testing is not the same thing)

    FInally, a question: How do we get rid of the pointy haired boss ? (See Dilbert)
    He knows nothing, makes random decisions (on a good day) and sucks half of the budget in bonuses...

    1. Re:Swift is not alone by Tablizer · · Score: 2

      How do we get rid of the pointy haired boss

      In the White House?

    2. Re:Swift is not alone by lucasnate1 · · Score: 1

      Blockchain, can anybody think of a revision system ? GIT, SVN ?

      Blockchain is very different from GIT and SVN, both of these trust all users, which can't be done with financial transactions.

      Students are not interested

      Looks like the old people are not very interested either, what I just wrote is really the basic idea of blockchain, to be able to handle hostiles as well as friendlies (assuming that there's not too many hostiles).

    3. Re:Swift is not alone by RobertJ1729 · · Score: 1

      LSTM networks - 1997
      autoencoders - 2008
      Max-pooling - 1992, 2010 for backpropogation through max-pooling shown to have superior performance.
      Droppout regularization - 2012
      GANs - 2014

    4. Re:Swift is not alone by lucasnate1 · · Score: 1

      I'm old btw, I just hear lectures and read wikipedia articles before I automatically assume things.

    5. Re:Swift is not alone by ceoyoyo · · Score: 1

      Blockchain trusts all users too. Anybody can make any change to the blockchain they feel like, but then nerds argue about which is the one true change. Eventually they vote based on the size of their computer.

      Truly an Internet technology.

      You're right though, Git is nothing like bitcoin (it IS a blockchain). Git has passwords.

  11. Solving the wrong problem by Anonymous Coward · · Score: 1

    Concurrency is mentioned in TFA.

    Look at die photos (of A4...A11 and mobile Intel) and compare allocation of space for CPU vs GPU over the last decade.
    Now compare time and effort spent on languages and toolchains that can't run on the GPU, and can.

    1. Re:Solving the wrong problem by careysub · · Score: 1

      Why don't you do that and give us a summary of the results rather than handing out homework assignments to everyone?

      If you have a point, make the point yourself.

      --
      Starships were meant to fly, Hands up and touch the sky - Nicky Minaj
    2. Re:Solving the wrong problem by Maury+Markowitz · · Score: 1

      > Now compare time and effort spent on languages and toolchains that can't run on the GPU

      Hmmm, interesting point.

  12. Nil is a feature by Maury+Markowitz · · Score: 3, Interesting

    > Classify the implicit optionality of objects purely as a source of bugs

    Among other issues, this remains my biggest complaint.

    Obj-C generally "did the right thing" with nil in most contexts. Sure, nil-pointer errors are a pain, but declaring them away and just forcing everyone to type ! everywhere does not eliminate them. It does, however, eliminate the simplicity of binding a nil to a text field and just getting a zero, precisely what has to happen in code now.

    1. Re:Nil is a feature by Kjella · · Score: 1

      Obj-C generally "did the right thing" with nil in most contexts. Sure, nil-pointer errors are a pain, but declaring them away and just forcing everyone to type ! everywhere does not eliminate them. It does, however, eliminate the simplicity of binding a nil to a text field and just getting a zero, precisely what has to happen in code now.

      So... you read an object that has no description because field is nil, show it in a dialog and afterwards the description is "0"? Why not the empty string ""? And when doing debug messaging I usually replace it with "(null)". And you sure don't want to convert nil to zero when it comes to numbers because for a field like "number_of_kids" nil would typically be used for unknown / didn't want to answer / not relevant / not applicable. That said, I wish they'd turn it around so you'd get a nil assignment error rather than a calling error. I also hate nil and the default nil != nil for change comparison and such whereas "" = "" and "0" = "0". Sometimes it would be really, really useful to use nil as an extra value with normal value semantics.

      --
      Live today, because you never know what tomorrow brings
    2. Re:Nil is a feature by JesseMcDonald · · Score: 1

      Classify the implicit optionality of objects purely as a source of bugs.

      Among other issues, this remains my biggest complaint.

      This is what you choose to complain about, fixing the "billion-dollar mistake" [infoq.com]? You actually want the language to implicitly accept all messages sent to nil as no-ops with a default return value, regardless of the intended interface, and to allow nil to be passed for any reference parameter even when it makes no sense for the parameter to be omitted?

      I would be among the first to promote language-agnostic APIs and allowing the developer to choose the language best suited to the problem domain. However, complaining about the parts of Swift that Apple got right is not very likely to make me more sympathetic to your cause.

      --
      "The state is that great fiction by which everyone tries to live at the expense of everyone else." - Bastiat
    3. Re:Nil is a feature by Lord_Jeremy · · Score: 1

      Nil handling in ObjC was generally effortless, in my experience. A great rule of thumb: call method on nil means return nil & send nil argument to something causes crash. The ‘as!’ or ‘try!’ pattern is so ubiquitous now, the advantages of the strong typing system are often lost in real production projects. I just saw an Apple example project using a ‘try!’ statement to simply loading an image resource, with a comment justifying that the image resource will always exist. Sorry, but no. You can’t guarantee that any resource in the filesystem always exist. You traded away some error handling from your strong typing for a crash. That’s not better, but it was the damn example project.

  13. The next language by Anonymous Coward · · Score: 2, Interesting

    Needs to find a way to provide intuitive usage of all those cores. One of the reasons C was so successful was it abstracted the hardware into a human understandable model. One of the problems with all the new languages is they try to fit a square peg in a round hole and ignore how the hardware works. Yes hardware has gotten much much much faster, but so much of that speed has been consumed with layers and layers and layers of abstraction. If someone figures out how to do what C did for uni-processor computers on multi-cores, that will be gold.

    1. Re:The next language by complete+loony · · Score: 1

      Sure, the swift compiler has to strip away a few layers of abstraction first. But swift is compiled using the same LLVM backend as clang.

      --
      09F91102 no, 455FE104 nope, F190A1E8 uh-uh, 7A5F8A09 that's not it, C87294CE no. Ah! 452F6E403CDF10714E41DFAA257D313F.
  14. Swift is for Grandpa by 110010001000 · · Score: 2

    All us cool kids have switched to Go and Rust. It is better to use the latest languages produced and controlled by a single corporate entity to keep your skills "sharp". By the way, can someone find me a job? I don't know C or C++ but I know how to use the latest frameworks!

  15. CPU transitions by DontBeAMoran · · Score: 1

    I don't know jack about Swift, but does it prevent people from assuming things about the CPU?

    It could very well be that Apple has been planning a transition to ARM CPUs for a long time and Swift is one of the step required to have everyone coding in a language were re-compiling for a new CPU is as effortless as possible to make sure all programs can make the jump to the next generation of their computers.

    --
    #DeleteFacebook
    1. Re: CPU transitions by DontBeAMoran · · Score: 1

      I'm talking about a seamless transition for the programmers, not the users.

      --
      #DeleteFacebook
    2. Re:CPU transitions by ceoyoyo · · Score: 1

      Objective-C did that pretty well. IIRC at one point you could compile an objective-C program into an app bundle that supported 32-bit PPC, 64-bit PPC, 32-bit Intel and 64-bit Intel. The programmer didn't have to care, and the user didn't either: the same app would run on any of the four platforms.

  16. Re:apple is the best!!! by DontBeAMoran · · Score: 2

    Given the size of Apple's bank account, shouldn't we be writing Appl€?

    --
    #DeleteFacebook
  17. Doug Crockfield by phantomfive · · Score: 1
    Doug Crockfield said it best:

    Anytime we change a software standard, it's an act of violence. It is disruptive. It will cause stuff to fail. It will cause cost and harm to people. So we need to be really careful when we revise the standards because there is that cost. We have to make sure that we're adding so much value to offset the cost.

    --
    "First they came for the slanderers and i said nothing."
  18. ObjC to Swift, 4 years in by Arkham · · Score: 3, Interesting

    I was a huge fan of Objective-C. I still think it's an elegant language. I love the delegate patterns, I love the quirky stuff like method swizzling, I love the runtime message passing.

    When Swift first came out, it was really rough. The Obj-C bridge APIs were all using forced-unwrapped optionals and the like, and Apple didn't do a great job explaining why all of that was in place. Only with Swift 2, 3, and 4 did it become clear that you should never force-unwrap unless using some crufty API that required it (which it turns out is almost never these days).

    I do miss some things like nested message passing, but I also don't miss a lot of things. I love the map, reduce, and filter capabilities, I like the more nuanced closures vs completion blocks. There are still things that frustrate me, but they generally get better every year. Swift is one of my favorite languages to code in these days.

    --
    - Vincit qui patitur.
    1. Re:ObjC to Swift, 4 years in by Tony · · Score: 1

      This.

      HUGE fan of Objective-C, back from the NeXT days. Been writing iOS apps since ARC was optional and I never used it, because *I* knew how to alloc and free memory. Yeah, that meant it was a pain in the ass when Apple made ARC a requirement.

      I miss introspection, sure. But optionals, tuples, native unicode support, default parameters, conditional generics, and a consistent calling syntax just makes my life easier. Add to that first-class immutable structs, better functional programming support, and stronger exception handling, and I just enjoy programming Swift more than Objective-C.

      It's not like dynamic dispatch went away -- it just got shuffled to object extensions.

      That said, there are some things I don't like about Swift: lack of introspection (as I admitted), and especially still using ARC for memory management. While it may be fast, resolving retention cycles can be difficult, especially if one half of the retention is in some Cocoa library.

      Swift doesn't lock you into Apple products. It's an open-source language, for cryin' out loud. What locks you into Apple products are the libraries you use to target a specific platform. Just like MFC locks you into Microsoft products.

      I can see why some people might prefer Objective-C. I still look on it fondly as the best of the C-based OO languages. Hell, I still love programming in straight-up C.

      I'm just glad I made the jump to Swift.

      Oh, I'm also moving to Kotlin for my Android projects for many of the same reasons.

      --
      Microsoft is to software what Budweiser is to beer.
  19. Swift solves NIH - "Not Invented Here" Syndrome by JoeyRox · · Score: 1

    And ironically solves NIH by copying elements from nearly every other programming language in existence.

  20. Reduce bugs + Retain performance by Tim12s · · Score: 2

    Reduce bugs + Retain performance... Quite often those two are not aligned.

    Apple live in a world where the real value of their product is dependent on 3rd party developers.

    (1) iOS apps crashed more than android apps. The common causes for application crashes on iOS and noticed that the majority of crashes are based on poor coding due to legacy syntax which can be corrected. Shown below are some extracts from 2016.

    (2) Typical of any virtual machine is the initialization cost of the VM. This means that you need to take a fully compiled approach otherwise you lose perceived performance advantages. JVM code is often more performant than a typical C, written at the same skill level, once the VM is warm/hot and great for server workloads however initialization costs are unavoidable.

    Everyone forgets history.

    FYI - ios apps crash more than android apps: https://www.techspot.com/news/...

    FYI - some infoq: 47% of apps crash more than 1% of the time: https://www.infoq.com/news/201...

    Android 2.3 'Gingerbread' had a crash rate of 1.7%, for example, while iOS 6 apps crashed 2.5% of the time.

    FYI - AppCoda: https://www.appcoda.com/apteli...

    3 Most Frequent iOS Crashes , 23rd May 2016

    SIGSEGV (50%) - This signal occurs when your app attempts to access memory that has not been allocated by the program.
    NSInvalidArgumentException - This crash occurs when a method is being called on an object that can’t respond to it.
    SIGABRT - You’ll see this in your debugger when there is an unhandled exception (see #2). However, in a deployed app SIGABRT appears when there is an assertion failure or abort method called within the app or the operating system. Often raised during asynchronous system method calls (CoreData, accessing files, NSUserDefaults, and other multithreaded system functions).

    1. Re:Reduce bugs + Retain performance by Tim12s · · Score: 1

      Again, iOS apps crashed 47% more than Android apps - That is a relatively HUGE difference in experience.

      ---

      Android 2.3 'Gingerbread' had a crash rate of 1.7%, for example, while iOS 6 apps crashed 2.5% of the time.

      (1) iOS apps crashed more than android apps. Apple would have noticed the common causes for application crashes on iOS and that the majority of crashes are based on poor coding due to legacy syntax which can be corrected. Shown below are some extracts from 2016.

  21. I know different (via Object Pascal)... apk by Anonymous Coward · · Score: 1

    See subject: Via Delphi (especially XE 10++) or FreePascal + Lazarus IDE 1.8.2 APK Hosts File Engine 64-bit https://news.slashdot.org/comments.pl?sid=12218294&threshold=-1&commentsort=0&mode=thread&pid=56764940/

    I ported to Linux, Windows, BSD & MacOS X (phones handled by Delphi IF I wish to spend the coin, & I don't + I think "smartphones" are security issue riddled TOYS - I actually LIKE FreePascal BETTER now).

    * Tools for development, especially in PROVEN older languages (especially for my program, it was C++ or Pascal to me (my favs) & since C is roots of C++ & C has buffer overflow security issues? Object Pascal it was for me since my program deals HEAVILY in stringwork (no buffer overflow possible as length's built-into Pascal strings)).

    APK

    P.S.=> Truthfully? It was a VERY EASY PORT from Delphi code for Win32/64 into Linux/BSD/MacOS X (except for some differences in TCP/IP ICMP stack API work which I "busted thru" finding out ping had MAC restrictions on it, NOT the RAW IP stack Linux has vs. WinSock2 LIMITED ones by default to most users))... apk

  22. Re:Oh Yeah by Austerity+Empowers · · Score: 1

    Schwifty... in here .

    Wubba lubba dub dub.

  23. Go by darkain · · Score: 1

    Microsoft has Visual Studio (C/C++, C#, Basic, etc). Google has GO. Apple has a pissing contest, I mean, Swift.

  24. You lost me at Cocoa by your_mother_sews_soc · · Score: 1

    I paid the bills as a Carbon (who knew?) developer. Considering I've always been able to keep current and learn new skills every few years, I was blindsided by Cocoa/Objective-C and the change to the Apple Developer tools. Inside Macintosh was a great resource and when Cocoa was born Inside Macintosh was left by the wayside. The small independent/inhouse developer was left to flounder. For all the greatness attributed to Steve Jobs, he seemed to have abandoned the small developers who couldn't go to "boot camps" or wherever else folks went to get on board the new platform. OS X is nice, but Carbon was a well documented and easy to navigate environment. Carbon made the Mac what it was and Apple and Steve Jobs decided to push NeXT OS instead. I am not alone in having fond memories of Carbon while using Microsoft's tools to ply my trade.

    --
    My user name was a mistake. Input wasn't restricted, my bad.
    1. Re:You lost me at Cocoa by shess · · Score: 1

      I paid the bills as a Carbon (who knew?) developer. Considering I've always been able to keep current and learn new skills every few years, I was blindsided by Cocoa/Objective-C and the change to the Apple Developer tools. Inside Macintosh was a great resource and when Cocoa was born Inside Macintosh was left by the wayside. The small independent/inhouse developer was left to flounder. For all the greatness attributed to Steve Jobs, he seemed to have abandoned the small developers who couldn't go to "boot camps" or wherever else folks went to get on board the new platform. OS X is nice, but Carbon was a well documented and easy to navigate environment. Carbon made the Mac what it was and Apple and Steve Jobs decided to push NeXT OS instead. I am not alone in having fond memories of Carbon while using Microsoft's tools to ply my trade.

      Eh, I spent the 90's working on NeXTSTEP stuff and abandoned Apple for a decade or so after the merger, but my opinion is exactly the opposite - after using NeXTSTEP, I looked at MacOS and could hardly believe that that was what Mac was running in the late 90's. Simply put, they were mired down by technical constraints which were making it increasingly hard to make broad changes and were looking for a way out. They didn't just realize it when they acquired NeXT, they'd already failed to build a replacement with Pink/Taligent.

      Watch the Jobs 1997 WWDC fireside chat. I spent a lot of my career frustrated with him, but in that talk he was spot on that it didn't matter how cool opendoc or other technologies were if nobody used them. Having a well-documented but dead platform helps nobody.

  25. Swift has never made sense to me by l0ungeb0y · · Score: 1

    Apple touted it as a more human-readable, easy to grok language, but it's only marginally more easy to deal with than the unwieldy Obj-C it's meant to supplant. Frankly, I don't think Apple should be focusing on Languages, they clearly do not understand how to support developers or produce a language that streamlines development. Perhaps they should copy MS and produce a language that rip-offs the Java API with Obj-C or Swift as it's underpinnings, as much as I can't stand MS, I opted for C# for some Unity projects and was quite happy to work with it and had little issues with diving in and working with it with no prior exposure to it

  26. Really by jimbo · · Score: 1

    "..an unbearable mental load" - a language is a tool, ffs, it has issues; so learn them and use it if you have to or become a florist.

    1. Re:Really by Jeremi · · Score: 1

      "..an unbearable mental load" - a language is a tool, ffs, it has issues; so learn them and use it if you have to or become a florist.

      Part of being an effective developer is choosing the right tool(s) for the job. If you choose poorly, you end up spending too much of your time fighting the mismatched tools rather than getting your program working, and you end up with a poor-performing/buggy/hard-to-maintain program that took a long time to develop and may have to be thrown out anyway.

      Even a florist would know better than to use a jackhammer to trim bouquets.

      --


      I don't care if it's 90,000 hectares. That lake was not my doing.
  27. The Purpose? Kill Windows Phone by RoscoeChicken · · Score: 1

    Apple didn't want business logic developed in C++11. That would have allowed sharing between Windows Phone and iOS.

  28. It *does* look better than Objective-C ... by Qbertino · · Score: 1

    .. i.e. less scary to most people.

    However, if you want to establish a PL it has to be cross-plattform. That's a given. And better at cross-plattform than any other PL. I mean GUI builder, binary compiler, FOSS all the way, hardware trickery, etc. Fall short on that and you'll have a hard time getting tracktion. .Net anyone? We have enough flaky half-assed shit in the PL space already - i.e. every freakin' PL out there. Apple has fallen a little short of this.

    The only other possible option for them is offering a zero-fuss experience for those who want to develop for the Apple ecosystem. The GP hints that this is not entirely the case - which would be a drag and a shortcoming on Apples behalf.

    About 7 months ago I pondered getting a stack of Apple hardware (Phone, Tablet, new MB Pro) and professionally develop Apple code for a living. This GP post has me glad I didn't. Web it is for me still as I decided. Open plattform technology. Nice. Can be a serious pain doing tricky stuff, but then again that stuff is rare. Just right for neat x-plattform UIs and shoveling data about. ... The only problem are the douchebags and halfwits in the webdev space - that's a real downer and a pill. The magnitude of shitty code and utterly clueless decisions is absolutely staggering and time and time again manages to have me stand with awe and amazement as to how these people even manage to get things working.

    As I just experienced once again today after a hard workday at my current agency. .... aaaah, agencies, ... don't even get me started ...

    --
    We suffer more in our imagination than in reality. - Seneca
  29. As an older(62) developer that picked up SWIFT by oldgraybeard · · Score: 1

    I decided a little under 2 years ago to move into the iOS development world. Had a project I could sell ;) I did not have any Apple devices or computers and had not used an Apple product since an Apple II.
    So I picked up a Mac Mini and installed XCode and I was off. While I was more comfortable with Obj-C. I made the choice early to go with Swift. I think it was Swift 2-2.5 or something.
    The hardest part was moving to the Apple/Swift way. And the Apple Developer/VPP/DEP/Apple Enterprise Developer/MDM Management world. It is in my mind a bit complex ;) to deploy. But it does work pretty well considering I am managing and supporting devices scattered through out the US remotely. The biggest issue during the process was Apples repeated updates broke everything from the code, to signing, to deployment again and again and again. But with the latest XCode and Swift 4 seems to be better and stable.
    Anyway, What I delivered/got paid for by my client was a Swift 4 app with some Obj-C in specific places ;)
    I think Apple will move to Swift for all development eventually. But as with all things Apple they could turn on a dime in future and head off on an entirely new direction abandoning everything and everyone Swift ;)

    Just my 2 cents ;)

  30. Re:Flutter for 2D, Unreal for 3D, Swift for NOTHIN by DontBeAMoran · · Score: 1

    And Fluttershy for MLP! Yay!

    --
    #DeleteFacebook
  31. As usual in these cases by nospam007 · · Score: 1

    You using it wrong, peepaw!

  32. Re:Flutter for 2D, Unreal for 3D, Swift for NOTHIN by Dog-Cow · · Score: 1

    So Swift was a rip-off a language released 2 years later, and Apple accurately stated that source compatibility would be broken. You are mixed-up and stupid.

  33. Objective C wasn't exactly a pleasure by balbeir · · Score: 1
    Well I prefer Swift over Objective C because I experienced programming in Objective C as painful.

    Very verbose syntax, and at least for me, hard to read/parse.

    I agree with the lack of introspection and dynamic dispatch being a bummer, though. And the Smalltalk style message passing appeared attractive.

    There was a time that this was not an issue because the alternatives were equally clunky and probably worse. But I would not be programming anything on iOS these days if it were not for Swift.

  34. Ruby is not (on Rails) by gawdonblue · · Score: 1

    Programming languages such as Lua, Objective-C, Erlang, and Ruby (on Rails)

    People, including TFS, seem to always conflate Ruby with Rails. Ruby is a programming language with many features, including easy metaprogramming for the creation of DSLs and useful frameworks. Rails is just one of these frameworks. It is definitely not a programming language in the way Lua, Objective-C, Erlang, or Ruby is.

  35. C# by ebvwfbw · · Score: 1

    Didn't we all wonder the same thing about C# ?
    Same thing with Ruby, Rust, Java?

    What a turd Java is. Man thing is always needing to be updated. It's also like the cockroach of languages. Never know where in the filesystem you'll fine an instance of old java laying around because the developers didn't know how to write java code such that it would work under newer versions. Lots of incompetent Java people out there.