What is Swift and what are its top alternatives?
Top Alternatives to Swift
- Objective-C
Objective-C is a superset of the C programming language and provides object-oriented capabilities and a dynamic runtime. Objective-C inherits the syntax, primitive types, and flow control statements of C and adds syntax for defining classes and methods. It also adds language-level support for object graph management and object literals while providing dynamic typing and binding, deferring many responsibilities until runtime. ...
- React Native
React Native enables you to build world-class application experiences on native platforms using a consistent developer experience based on JavaScript and React. The focus of React Native is on developer efficiency across all the platforms you care about - learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native. ...
- Kotlin
Kotlin is a statically typed programming language for the JVM, Android and the browser, 100% interoperable with Java ...
- Golang
Go is expressive, concise, clean, and efficient. Its concurrency mechanisms make it easy to write programs that get the most out of multicore and networked machines, while its novel type system enables flexible and modular program construction. Go compiles quickly to machine code yet has the convenience of garbage collection and the power of run-time reflection. It's a fast, statically typed, compiled language that feels like a dynamically typed, interpreted language. ...
- Java
Java is a programming language and computing platform first released by Sun Microsystems in 1995. There are lots of applications and websites that will not work unless you have Java installed, and more are created every day. Java is fast, secure, and reliable. From laptops to datacenters, game consoles to scientific supercomputers, cell phones to the Internet, Java is everywhere! ...
- Python
Python is a general purpose programming language created by Guido Van Rossum. Python is most praised for its elegant syntax and readable code, if you are just beginning your programming career python suits you best. ...
- Rust
Rust is a systems programming language that combines strong compile-time correctness guarantees with fast performance. It improves upon the ideas of other systems languages like C++ by providing guaranteed memory safety (no crashes, no data races) and complete control over the lifecycle of memory. ...
- Xcode
The Xcode IDE is at the center of the Apple development experience. Tightly integrated with the Cocoa and Cocoa Touch frameworks, Xcode is an incredibly productive environment for building amazing apps for Mac, iPhone, and iPad. ...
Swift alternatives & related posts
Objective-C
- Ios212
- Xcode114
- Backed by apple62
- Osx46
- Interface builder40
- Good old fashioned ooe with a modern twist10
- Goober, please2
- Object-oriented1
- Handles well null values (no NullPointerExceptions)1
- UNREADABLE1
related Objective-C posts
Excerpts from how we developed (and subsequently open sourced) Uber's cross-platform mobile architecture framework, RIBs , going from Objective-C to Swift in the process for iOS: https://github.com/uber/RIBs
Uber’s new application architecture (RIBs) extensively uses protocols to keep its various components decoupled and testable. We used this architecture for the first time in our new rider application and moved our primary language from Objective-C to Swift. Since Swift is a very static language, unit testing became problematic. Dynamic languages have good frameworks to build test mocks, stubs, or stand-ins by dynamically creating or modifying existing concrete classes.
Needless to say, we were not very excited about the additional complexity of manually writing and maintaining mock implementations for each of our thousands of protocols.
The information required to generate mock classes already exists in the Swift protocol. For Uber’s use case, we set out to create tooling that would let engineers automatically generate test mocks for any protocol they wanted by simply annotating them.
The iOS codebase for our rider application alone incorporates around 1,500 of these generated mocks. Without our code generation tool, all of these would have to be written and maintained by hand, which would have made testing much more time-intensive. Auto-generated mocks have contributed a lot to the unit test coverage that we have today.
We built these code generation tools ourselves for a number of reasons, including that there weren’t many open source tools available at the time we started our effort. Today, there are some great open source tools to generate resource accessors, like SwiftGen. And Sourcery can help you with generic code generation needs:
https://eng.uber.com/code-generation/ https://eng.uber.com/driver-app-ribs-architecture/
(GitHub : https://github.com/uber/RIBs )
Greetings everyone. I ran a design studio for 8 years in which we designed mobile and web apps. I also lead development teams when our client asked us to carry out the development of the projects. I always had an interest in learning to code to help me understand what is going on on the dev side and also build small apps as a hobby. I tried several times to get on a learning path, but challenges always put me down, so I quit after a couple of weeks. I tried JavaScript, Python, PHP, and Objective-C.
Now I am retrying to teach myself Swift and especially SwiftUI for more than a month, and It's been going well so far. I want to build my own small apps, and I'm not focused on getting hired as a developer. I want to ask if it's the right language to start learning to program or should I learn something else first as a foundation. I'm currently taking a 100 days of code challenge and reading the Swift 5.3 PDF if I want to get more information on a specific topic. It feels like none of the stuff is sticking, but I'm not sure if it's the way it goes or my approach is wrong.
I would appreciate any kind of guidance. Thanks
- Learn once write everywhere206
- Cross platform168
- Javascript164
- Native ios components120
- Built by facebook67
- Easy to learn63
- Bridges me into ios development44
- It's just react40
- No compile39
- Declarative36
- Fast22
- Virtual Dom12
- Insanely fast develop / test cycle12
- Livereload12
- Great community11
- Native android components9
- It is free and open source9
- Backed by Facebook9
- Easy setup9
- Scalable7
- Highly customizable7
- Great errors6
- Win win solution of hybrid app6
- Everything component6
- Awesome6
- Not dependent on anything such as Angular5
- Simple5
- OTA update4
- Awesome, easy starting from scratch4
- Easy to use3
- As good as Native without any performance concerns3
- Many salary2
- Can be incrementally added to existing native apps2
- Hot reload2
- Over the air update (Flutter lacks)2
- 'It's just react'2
- Web development meets Mobile development2
- Ngon1
- Javascript23
- Built by facebook18
- Cant use CSS12
- 30 FPS Limit4
- Slow2
- Some compenents not truly native2
- Generate large apk even for a simple app2
related React Native posts









I am starting to become a full-stack developer, by choosing and learning .NET Core for API Development, Angular CLI / React for UI Development, MongoDB for database, as it a NoSQL DB and Flutter / React Native for Mobile App Development. Using Postman, Markdown and Visual Studio Code for development.
















I'm working as one of the engineering leads in RunaHR. As our platform is a Saas, we thought It'd be good to have an API (We chose Ruby and Rails for this) and a SPA (built with React and Redux ) connected. We started the SPA with Create React App since It's pretty easy to start.
We use Jest as the testing framework and react-testing-library to test React components. In Rails we make tests using RSpec.
Our main database is PostgreSQL, but we also use MongoDB to store some type of data. We started to use Redis for cache and other time sensitive operations.
We have a couple of extra projects: One is an Employee app built with React Native and the other is an internal back office dashboard built with Next.js for the client and Python in the backend side.
Since we have different frontend apps we have found useful to have Bit to document visual components and utils in JavaScript.
- Interoperable with Java67
- Functional Programming support51
- Null Safety46
- Official Android support42
- Backed by JetBrains41
- Concise34
- Modern Multiplatform Applications33
- Expressive Syntax25
- Coroutines24
- Target to JVM23
- Open Source22
- Practical elegance16
- Statically Typed16
- Type Inference15
- Android support15
- Readable code11
- Better Java11
- Powerful as Scala, simple as Python, plus coroutines <310
- Pragmatic10
- Lambda8
- Better language for android7
- Expressive DSLs7
- Target to JavaScript7
- Less boilerplate code6
- Used for Android5
- Fast Programming language4
- Less code4
- Functional Programming Language3
- Less boiler plate code3
- Friendly community3
- Native2
- Official Google Support1
- Latest version of Java1
- Java interop makes users write Java in Kotlin7
- Frequent use of {} keys4
- Hard to make teams adopt the Kotlin style2
- Nonullpointer Exception2
- Friendly community1
- Slow compiler1
- No boiler plate code1
related Kotlin posts
Hi Community! Trust everyone is keeping safe. I am exploring the idea of building a #Neobank (App) with end-to-end banking capabilities. In the process of exploring this space, I have come across multiple Apps (N26, Revolut, Monese, etc) and explored their stacks in detail. The confusion remains to be the Backend Tech to be used?
What would you go with considering all of the languages such as Node.js Java Rails Python are suggested by some person or the other. As a general trend, I have noticed the usage of Node with React on the front or Node with a combination of Kotlin and Swift. Please suggest what would be the right approach!
In our company we have think a lot about languages that we're willing to use, there we have considering Java, Python and C++ . All of there languages are old and well developed at fact but that's not ideology of araclx. We've choose a edge technologies such as Node.js , Rust , Kotlin and Go as our programming languages which is some kind of fun. Node.js is one of biggest trends of 2019, same for Go. We want to grow in our company with growth of languages we have choose, and probably when we would choose Java that would be almost impossible because larger languages move on today's market slower, and cannot have big changes.
Golang
- High-performance531
- Simple, minimal syntax387
- Fun to write354
- Easy concurrency support via goroutines295
- Fast compilation times267
- Goroutines189
- Statically linked binaries that are simple to deploy177
- Simple compile build/run procedures148
- Backed by google134
- Great community131
- Garbage collection built-in50
- Built-in Testing42
- Excellent tools - gofmt, godoc etc41
- Elegant and concise like Python, fast like C38
- Awesome to Develop34
- Used for Docker25
- Flexible interface system24
- Deploy as executable22
- Great concurrency pattern22
- Open-source Integration19
- Fun to write and so many feature out of the box16
- Easy to read15
- Its Simple and Heavy duty14
- Go is God14
- Powerful and simple13
- Easy to deploy13
- Concurrency11
- Best language for concurrency11
- Rich standard library10
- Safe GOTOs10
- Clean code, high performance9
- Easy setup9
- Hassle free deployment8
- High performance8
- Simplicity, Concurrency, Performance8
- Single binary avoids library dependency issues7
- Used by Giants of the industry7
- Simple, powerful, and great performance6
- Cross compiling6
- Very sophisticated syntax5
- Garbage Collection5
- Gofmt5
- WYSIWYG5
- Excellent tooling5
- Widely used4
- Kubernetes written on Go4
- Keep it simple and stupid3
- No generics2
- Operator goto1
- You waste time in plumbing code catching errors41
- Verbose25
- Packages and their path dependencies are braindead22
- Google's documentations aren't beginer friendly15
- Dependency management when working on multiple projects15
- Automatic garbage collection overheads10
- Uncommon syntax8
- Type system is lacking (no generics, etc)6
- Collection framework is lacking (list, set, map)2
related Golang posts











How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:
Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.
Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:
https://eng.uber.com/distributed-tracing/
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark
Winds 2.0 is an open source Podcast/RSS reader developed by Stream with a core goal to enable a wide range of developers to contribute.
We chose JavaScript because nearly every developer knows or can, at the very least, read JavaScript. With ES6 and Node.js v10.x.x, it’s become a very capable language. Async/Await is powerful and easy to use (Async/Await vs Promises). Babel allows us to experiment with next-generation JavaScript (features that are not in the official JavaScript spec yet). Yarn allows us to consistently install packages quickly (and is filled with tons of new tricks)
We’re using JavaScript for everything – both front and backend. Most of our team is experienced with Go and Python, so Node was not an obvious choice for this app.
Sure... there will be haters who refuse to acknowledge that there is anything remotely positive about JavaScript (there are even rants on Hacker News about Node.js); however, without writing completely in JavaScript, we would not have seen the results we did.
#FrameworksFullStack #Languages
Java
- Great libraries589
- Widely used442
- Excellent tooling400
- Huge amount of documentation available388
- Large pool of developers available332
- Open source204
- Excellent performance200
- Great development155
- Vast array of 3rd party libraries149
- Used for android148
- Compiled Language60
- Used for Web49
- Managed memory46
- High Performance45
- Native threads44
- Statically typed43
- Easy to read35
- Great Community33
- Reliable platform29
- Sturdy garbage collection24
- JVM compatibility24
- Cross Platform Enterprise Integration21
- Universal platform20
- Good amount of APIs20
- Great Support18
- Great ecosystem14
- Lots of boilerplate11
- Backward compatible11
- Everywhere10
- Excellent SDK - JDK9
- Static typing7
- It's Java7
- Better than Ruby6
- Portability6
- Mature language thus stable systems6
- Cross-platform6
- Long term language6
- Clojure5
- Used for Android development5
- Vast Collections Library5
- Most developers favorite4
- Old tech4
- Javadoc3
- History3
- Testable3
- Great Structure3
- Stable platform, which many new languages depend on3
- Best martial for design3
- Faster than python2
- Type Safe1
- Verbosity32
- NullpointerException27
- Overcomplexity is praised in community culture16
- Nightmare to Write14
- Boiler plate code11
- Classpath hell prior to Java 98
- No REPL6
- No property4
- Non-intuitive generic implementation2
- There is not optional parameter2
- Code are too long2
- Floating-point errors2
- Returning Wildcard Types1
- Java's too statically, stronglly, and strictly typed1
- Terrbible compared to Python/Batch Perormence1
related Java posts











How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:
Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.
Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:
https://eng.uber.com/distributed-tracing/
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark
When you think about test automation, it’s crucial to make it everyone’s responsibility (not just QA Engineers'). We started with Selenium and Java, but with our platform revolving around Ruby, Elixir and JavaScript, QA Engineers were left alone to automate tests. Cypress was the answer, as we could switch to JS and simply involve more people from day one. There's a downside too, as it meant testing on Chrome only, but that was "good enough" for us + if really needed we can always cover some specific cases in a different way.
Python
- Great libraries1.1K
- Readable code944
- Beautiful code833
- Rapid development777
- Large community682
- Open source425
- Elegant385
- Great community277
- Object oriented268
- Dynamic typing214
- Great standard library75
- Very fast56
- Functional programming51
- Scientific computing42
- Easy to learn41
- Great documentation33
- Matlab alternative26
- Productivity25
- Easy to read25
- Simple is better than complex21
- It's the way I think18
- Imperative17
- Free15
- Very programmer and non-programmer friendly15
- Powerfull language14
- Powerful14
- Fast and simple13
- Machine learning support13
- Scripting12
- Explicit is better than implicit9
- Clear and easy and powerfull8
- Unlimited power8
- Ease of development8
- Import antigravity7
- Print "life is short, use python"6
- It's lean and fun to code6
- High Documented language5
- I love snakes5
- Although practicality beats purity5
- Flat is better than nested5
- Great for tooling5
- Fast coding and good for competitions5
- There should be one-- and preferably only one --obvious5
- Python has great libraries for data processing5
- Readability counts4
- Beautiful is better than ugly3
- Multiple Inheritence3
- Great for analytics3
- CG industry needs3
- Plotting3
- Lists, tuples, dictionaries3
- Rapid Prototyping3
- Socially engaged community3
- Complex is better than complicated3
- Now is better than never3
- List comprehensions2
- Web scraping2
- Many types of collections2
- Easy to setup and run smooth2
- Generators2
- Special cases aren't special enough to break the rules2
- If the implementation is hard to explain, it's a bad id2
- If the implementation is easy to explain, it may be a g2
- Simple and easy to learn2
- Import this2
- No cruft2
- Easy to learn and use2
- Better outcome1
- Powerful language for AI1
- Should START with this but not STICK with This1
- Can understand easily who are new to programming1
- Batteries included1
- Good for hacking1
- A-to-Z1
- Only one way to do it1
- Because of Netflix1
- Pip install everything1
- It is Very easy , simple and will you be love programmi1
- Flexible and easy1
- Powerful0
- Still divided between python 2 and python 351
- Performance impact29
- Poor syntax for anonymous functions26
- GIL21
- Package management is a mess19
- Too imperative-oriented14
- Dynamic typing12
- Hard to understand12
- Very slow10
- Not everything is expression8
- Indentations matter a lot7
- Explicit self parameter in methods7
- No anonymous functions6
- Poor DSL capabilities6
- Incredibly slow6
- Requires C functions for dynamic modules6
- The "lisp style" whitespaces5
- Fake object-oriented programming5
- Hard to obfuscate5
- Threading5
- Circular import4
- The benevolent-dictator-for-life quit4
- Official documentation is unclear.4
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- Not suitable for autocomplete4
- Meta classes2
- Training wheels (forced indentation)1
related Python posts











How Uber developed the open source, end-to-end distributed tracing Jaeger , now a CNCF project:
Distributed tracing is quickly becoming a must-have component in the tools that organizations use to monitor their complex, microservice-based architectures. At Uber, our open source distributed tracing system Jaeger saw large-scale internal adoption throughout 2016, integrated into hundreds of microservices and now recording thousands of traces every second.
Here is the story of how we got here, from investigating off-the-shelf solutions like Zipkin, to why we switched from pull to push architecture, and how distributed tracing will continue to evolve:
https://eng.uber.com/distributed-tracing/
(GitHub Pages : https://www.jaegertracing.io/, GitHub: https://github.com/jaegertracing/jaeger)
Bindings/Operator: Python Java Node.js Go C++ Kubernetes JavaScript OpenShift C# Apache Spark
Winds 2.0 is an open source Podcast/RSS reader developed by Stream with a core goal to enable a wide range of developers to contribute.
We chose JavaScript because nearly every developer knows or can, at the very least, read JavaScript. With ES6 and Node.js v10.x.x, it’s become a very capable language. Async/Await is powerful and easy to use (Async/Await vs Promises). Babel allows us to experiment with next-generation JavaScript (features that are not in the official JavaScript spec yet). Yarn allows us to consistently install packages quickly (and is filled with tons of new tricks)
We’re using JavaScript for everything – both front and backend. Most of our team is experienced with Go and Python, so Node was not an obvious choice for this app.
Sure... there will be haters who refuse to acknowledge that there is anything remotely positive about JavaScript (there are even rants on Hacker News about Node.js); however, without writing completely in JavaScript, we would not have seen the results we did.
#FrameworksFullStack #Languages
- Guaranteed memory safety137
- Fast125
- Open source83
- Minimal runtime75
- Pattern matching69
- Type inference61
- Concurrent55
- Algebraic data types54
- Efficient C bindings45
- Practical43
- Best advances in languages in 20 years37
- Fix for C/C++29
- Safe, fast, easy + friendly community29
- Stablity23
- Closures22
- Zero-cost abstractions21
- Extensive compiler checks19
- Great community18
- No NULL type15
- Async/await14
- Completely cross platform: Windows, Linux, Android14
- No Garbage Collection13
- Great documentations12
- High-performance12
- Super fast11
- High performance11
- Generics10
- Safety no runtime crashes10
- Fearless concurrency10
- Guaranteed thread data race safety9
- Compiler can generate Webassembly9
- Helpful compiler9
- Easy Deployment8
- Prevents data races8
- Macros8
- Painless dependency management7
- RLS provides great IDE support7
- Real multithreading6
- Good package management4
- Support on Other Languages4
- Hard to learn25
- Ownership learning curve23
- Unfriendly, verbose syntax10
- High size of builded executable4
- Variable shadowing4
- Many type operations make it difficult to follow4
- No jobs3
related Rust posts
Sentry's event processing pipeline, which is responsible for handling all of the ingested event data that makes it through to our offline task processing, is written primarily in Python.
For particularly intense code paths, like our source map processing pipeline, we have begun re-writing those bits in Rust. Rust’s lack of garbage collection makes it a particularly convenient language for embedding in Python. It allows us to easily build a Python extension where all memory is managed from the Python side (if the Python wrapper gets collected by the Python GC we clean up the Rust object as well).
In our company we have think a lot about languages that we're willing to use, there we have considering Java, Python and C++ . All of there languages are old and well developed at fact but that's not ideology of araclx. We've choose a edge technologies such as Node.js , Rust , Kotlin and Go as our programming languages which is some kind of fun. Node.js is one of biggest trends of 2019, same for Go. We want to grow in our company with growth of languages we have choose, and probably when we would choose Java that would be almost impossible because larger languages move on today's market slower, and cannot have big changes.
- IOS Development130
- Personal assistant on steroids32
- Easy setup29
- Excellent integration with Clang17
- Beautiful2
- Built-in everything1
- Massively bloated and complicated for smaller projects6
- Horrible auto completiting and text editing3
- Slow startup1
- Very slow emulator1
related Xcode posts
As a Engineering Manager & Director at SmartZip, I had a mix of front-end, back-end, #mobile engineers reporting to me.
Sprints after sprints, I noticed some inefficiencies on the MobileDev side. People working multiple sprints in a row on their Xcode / Objective-C codebase while some others were working on Android Studio. After which, QA & Product ensured both applications were in sync, on a UI/UX standpoint, creating addional work, which also happened to be extremely costly.
Our resources being so limited, my role was to stop this bleeding and keep my team productive and their time, valuable.
After some analysis, discussions, proof of concepts... etc. We decided to move to a single codebase using React Native so our velocity would increase.
After some initial investment, our initial assumptions were confirmed and we indeed started to ship features a lot faster than ever before. Also, our engineers found a way to perform this upgrade incrementally, so the initial platform-specific codebase wouldn't have to entirely be rewritten at once but only gradually and at will.
Feedback around React Native was very positive. And I doubt - for the kind of application we had - no one would want to go back to two or more code bases. Our application was still as Native as it gets. And no feature or device capability was compromised.
I've recently switched to using Expo for initializing and developing my React Native apps. Compared to React Native CLI, it's so much easier to get set up and going. Setting up and maintaining Android Studio, Android SDK, and virtual devices used to be such a headache. Thanks to Expo, I can now test my apps directly on my Android phone, just by installing the Expo app. I still use Xcode Simulator for iOS testing, since I don't have an iPhone, but that's easy anyway. The big win for me with Expo is ease of Android testing.
The Expo SDK also provides convenient features like Facebook login, MapView
, push notifications, and many others. https://docs.expo.io/versions/v31.0.0/sdk/