F#, Scala, OCaml, Haskell, Clojure already have uses at big financial corporations and bio-informatics.
However, Swift is another great way for spreading the ML gospel to mainstream developers, specially if it slowly takes Objective-C's place in Apple's heart.
Especially with the move towards microservices and reactive architectures.
Yes, Lisp can do pattern matching, usually implemented via macros,
In Clojure you use the core.match library.
Or if you have a more strict reading, Lisp is implementation-driven FP in the 70s compared to theory-driven FP from the time.
Even Haskell does not have all the mathematics theory that one could apply to functional programming.
A programming language to be representative of a programming paradigm does not need to have 100% of all ideas out there.
Oh, you sweet summer child. Work with a language without closures and try to do anything functional.
C# is the only language that is both modern and spans all major mobile platforms.
Personally I consider C++14 quite modern.
I mean, look at GNUStep. Not widespread adoption.
GNUStep failure is more to do with Objective-C being such an odd language for most people.
This is only a selling point to developers that mix language with implementation, or never used a native code compiler.
The fact that it sat beneath other windows meant you had to constantly shift windows to get to it, which I found frustrating. Likely a configuration option?
It probably runs excellently on modern hardware, albeit with no GPU acceleration or anything to reduce main CPU cycles.
Is there any other way to do live streams embedded on a web page without a proprietary Flash plugin?
Awesome. Who should I switch to that doesn't want that?
My thoughts exactly when tried to view the live stream.
Or would that enable a Linux port?
I would be interested in a Swift port for Linux server-side/command line dev. Not so much client UI dev. Swift on Linux servers could help Apple sell more Macbooks to developers.
Why bother with Swift in such use case...
Swift is great for pushing functional programming down the throat to mainstream developers that wish to target iOS, but it is no more pragmatic than OCaml or F#.
For the OP use case, targeting Linux server software is already better served by the languages I mentioned.
Swift seems more approachable then those languages. Pragmatic in the sense that Rust and Kotlin are.
For Hackers in SF: We are running a Swift Hackday at GitHub HQ on the 27th September. There will be food, drink, swag and lots of other Swift hackers! Check it out & RSVP at http://SwiftHack.splashthat.com
- It's Keynote time/September 9, so we call what we have, crashing bugs included, 1.0.
- We culled the features that do not work reliably yet, polished the good parts, and called it 1.0.
- This is a/the set of features that we consider to form a good product, and all features work reasonably well.
This is clearly a marketing-driven 1.0. It's really not ready, and wouldn't reasonably be called a 1.0 otherwise.
However, they've been pretty good about sticking to a solid set of features and not over-extending themselves for this initial release. It seems fairly clear that they intend to go in and fill out a lot of stuff later, and preferred a smaller set of solid features to start with rather than trying to do everything at once.
"Binary Compatibility and Frameworks
While your app’s runtime compatibility is ensured, the Swift language itself will continue to evolve, and the binary interface will also change. To be safe, all components of your app should be built with the same version of Xcode and the Swift compiler to ensure that they work together.
This means that frameworks need to be managed carefully. For instance, if your project uses frameworks to share code with an embedded extension, you will want to build the frameworks, app, and extensions together. It would be dangerous to rely upon binary frameworks that use Swift — especially from third parties. As Swift changes, those frameworks will be incompatible with the rest of your app. When the binary interface stabilizes in a year or two, the Swift runtime will become part of the host OS and this limitation will no longer exist."
- Objective-C will be around and supported for a long time. (Apple has a massive amount of Objective-C source code that it's not going to port to Swift any time soon.)
- Almost all iOS tutorials, examples, and books use Objective-C.
- Almost all iOS-specific third-party source code you might want to use is implemented in Objective-C.
- It's easier to use C and C++ libraries from Objective-C than from Swift.
- There are many Objective-C experts you can get help from. There are very few Swift experts.
- The Swift language and its standard library are currently not very well documented.
Stick with Objective-C for now. When you're comfortable with the iOS SDK and Swift is better documented, you can consider learning Swift.
Swift uses some C/C++ under the hood, and integrates it's object model into the ObjC object model (which is C). However, swift structs are not objects, from what I can tell they are virtually identical to structs in C (from a memory layout perspective).
Some swift objects are incompatible with the ObjC object model and cannot really be used from ObjC or really any other language (it does name mangling like C++ which makes interfacing rather difficult)
No. From Xcode6 release notes:
"iOS 7 and OS X 10.9 minimum deployment target
The Swift compiler and Xcode now enforce a minimum deployment target of iOS 7 or OS X Mavericks. Setting an earlier deployment target results in a build failure."
Swift's Objective-C compatibility mode is a kind of ugly extension feature to support their legacy code. The compiler makes inter-op stuffs automatically.
You can target only down to 7.0 because Apple set the goal of 7.0. There should be some stuffs required to support Swift, anyway it doesn't matter unless you're a runtime engineer. Point is earlier than 7.0 is out of support by Apple.
I don't have a mac, let alone iTunes.
Is there a legal way for me to download/purchase a manual to help him with his progress?
It'll let you run Swift code from your browser. The Learn page gives you a short run down of some features as well (I'm in the middle of writing up content for it, what's there now is a placeholder really, just the basics) and links to more documentation from Apple.
That's what I was looking for. Really appreciate it.
iOS/Xcode as a first programming environment is really odd and foreign to me, but my brother seemed excited about it, and I want to encourage him. He's really talented, he could be amazing as a software engineer if he ever wanted to be one.
Beware, some of the vids are probably out-dated. It was my experience that every version of XCode6beta that came out broke my app with syntax or object-access type changes. I just downloaded XCode6GM and a bunch of stuff I was doing with "as NSArray" forced me to do "as? NSArray". And self.navigationController.navigationBar needed a "?" appended to controller, otherwise you'd get the very confusing build error saying something like "navigationController has no member called navigationBar".
And thanks for the code conversion tips :)
A good place to start with python would be the Introduction to Computer Science course on Udacity.
If you are interested in ML, I can recommend taking the Programming Languages course on Coursera after the python course.
Also - tld of .tips? I need to register some funny names now
Fellow Googler btw.
Typically, when people say that a language "reached 1.0", they mean the very end of that process.
As a user of a not yet 1.0 language (Elixir, though it has reached release candidate status), backward incompatibilities can be a pain to deal with. The reason: third-party libraries that may or may not be updated, more or less quickly.
And yet it's absolutely necessary to get things right while you design the language, because every single mistake will be carried forward practically forever: see Python 3 as to why it's really hard to fix a language...
That's wrong for practically all cases I know of (Java, C#, Python, Perl).
Which means the issue is quite clearly with Google and their insistence on using VP8/WebM instead of what almost every other company is using.
In any case, live streaming in Chrome is possible with WebM, or even WebRTC. Flash is not ideal either, but at least it has consistent support on the desktop.
And no you cannot stream with webrtc without building a complicated back end webrtc MCU implementation which requires significant engineering and is not at all supported by the creators of webrtc who are focused on peer to peer inside browsers.
That wasn't very quiet at all.
- it brings interactive programming concepts (Playgrounds) into many mainstream developers.
- it belongs to the ML language family
- it recognizes the advances in mainstream computing in the last 30 years
- not everyone like to type @somekeyord and [some method call] everywhere.
- many of us do buy development tools and open source is just a nice to have feature
I realize this seems nit-pick-y (and for that I apologize), but that's a false dichotomy.
Open source != free. It's possible to pay/buy open source software.
iOS is the lead platform for mobile app development. It is also by far the most lucrative both in terms of sales and the quality of the users i.e. for non-sales revenue. Hence there are going to more than a few developers on here interested in it.
We see posts all the time for Go, Rust etc. Why would Swift be any different ?
When Swift was released every hipster and his cat jumped the wagon on how great it is. I even saw someone trying to make webstack out of it.
Just an example:
>Microsoft released C# Roslyn source code, announce Linux support with K Runtime this year
They're going to the right direction, maybe someday...
>Apple released Swift, closed source language that runs only on one platform (Mac)
Apple is so awesome, keep innovating guys! Now let's write a webstack and nosql db using Swift!
Even more when K will come out I don't think there will be any worries at all.
Let's just hope that with the release of VS2014 and K Runtime all those things will get solved like MS promised.
what matters is the platform
similarly Swift has iOS and OSX - other languages are available on these but I guess developers are anticipating Apple emphasising Swift over Objective-C going forward
In what way is GCD not a concurrency mechanism ? And why would you port Go's channel/routine model when it is less flexible than the Actor model ? And even then what type of mobile applications require that level of concurrency ? I've built about 20 mobile apps and not once needed anything more than a few background tasks.
Why doesn't Go have generics and sum types?
I could say the same of Go as a language, given the disdain for all what modern languages offer.
With modern languages where library types can be treated as first class types, concurrency can be exposed via libraries.
I've never had a phone die after 4 hours of use and I've had the 1st Gen iphone and the HTC G1