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
- Xcode115
- Backed by apple62
- Osx47
- 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 everywhere208
- 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 Dom13
- Insanely fast develop / test cycle12
- Livereload12
- Great community11
- It is free and open source9
- Native android components9
- Easy setup9
- Backed by Facebook9
- Highly customizable7
- Scalable7
- Awesome6
- Everything component6
- Great errors6
- Win win solution of hybrid app6
- Not dependent on anything such as Angular5
- Simple5
- Awesome, easy starting from scratch4
- OTA update4
- As good as Native without any performance concerns3
- Easy to use3
- 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 facebook19
- Cant use CSS12
- 30 FPS Limit4
- Generate large apk even for a simple app2
- Some compenents not truly native2
- Slow2
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 Java71
- Functional Programming support53
- Null Safety48
- Official Android support44
- Backed by JetBrains43
- Concise36
- Modern Multiplatform Applications35
- Expressive Syntax27
- Target to JVM26
- Coroutines25
- Open Source23
- Practical elegance18
- Statically Typed18
- Android support16
- Type Inference16
- Readable code13
- Better Java12
- Powerful as Scala, simple as Python, plus coroutines <312
- Pragmatic10
- Lambda9
- Target to JavaScript8
- Better language for android8
- Expressive DSLs8
- Used for Android6
- Less boilerplate code6
- Fast Programming language5
- Less code5
- Functional Programming Language4
- Friendly community4
- Less boiler plate code4
- Native3
- Official Google Support2
- Spring2
- Latest version of Java2
- 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-performance534
- Simple, minimal syntax389
- Fun to write356
- Easy concurrency support via goroutines297
- Fast compilation times269
- Goroutines191
- Statically linked binaries that are simple to deploy178
- Simple compile build/run procedures149
- Backed by google135
- Great community132
- Garbage collection built-in51
- Built-in Testing43
- Excellent tools - gofmt, godoc etc42
- Elegant and concise like Python, fast like C38
- Awesome to Develop35
- Used for Docker25
- Flexible interface system24
- Deploy as executable22
- Great concurrency pattern22
- Open-source Integration19
- Go is God16
- Fun to write and so many feature out of the box16
- Easy to read15
- Its Simple and Heavy duty14
- Powerful and simple13
- Easy to deploy13
- Best language for concurrency12
- Concurrency11
- Safe GOTOs10
- Rich standard library10
- Clean code, high performance9
- Easy setup9
- High performance8
- Hassle free deployment8
- Simplicity, Concurrency, Performance8
- Used by Giants of the industry7
- Single binary avoids library dependency issues7
- Cross compiling6
- Simple, powerful, and great performance6
- Gofmt5
- Garbage Collection5
- Very sophisticated syntax5
- Excellent tooling5
- WYSIWYG5
- Keep it simple and stupid4
- Widely used4
- Kubernetes written on Go4
- No generics2
- Operator goto1
- You waste time in plumbing code catching errors41
- Verbose25
- Packages and their path dependencies are braindead23
- Dependency management when working on multiple projects15
- Google's documentations aren't beginer friendly15
- Automatic garbage collection overheads10
- Uncommon syntax8
- Type system is lacking (no generics, etc)6
- Collection framework is lacking (list, set, map)3
- Best programming language2
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 libraries593
- Widely used444
- Excellent tooling400
- Huge amount of documentation available390
- Large pool of developers available333
- Open source205
- Excellent performance201
- Great development155
- Vast array of 3rd party libraries149
- Used for android148
- Compiled Language60
- Used for Web51
- Managed memory46
- High Performance45
- Native threads44
- Statically typed43
- Easy to read35
- Great Community33
- Reliable platform29
- Sturdy garbage collection24
- JVM compatibility24
- Cross Platform Enterprise Integration22
- Universal platform20
- Good amount of APIs20
- Great Support18
- Great ecosystem14
- Backward compatible11
- Lots of boilerplate11
- Everywhere10
- Excellent SDK - JDK9
- It's Java7
- Static typing7
- Mature language thus stable systems6
- Better than Ruby6
- Long term language6
- Cross-platform6
- Portability6
- Clojure5
- Vast Collections Library5
- Used for Android development5
- Most developers favorite4
- Old tech4
- Javadoc3
- Stable platform, which many new languages depend on3
- History3
- Testable3
- Best martial for design3
- Great Structure3
- Faster than python2
- Type Safe2
- Verbosity32
- NullpointerException27
- Overcomplexity is praised in community culture16
- Nightmare to Write16
- Boiler plate code12
- Classpath hell prior to Java 98
- No REPL6
- No property4
- Code are too long3
- There is not optional parameter2
- Floating-point errors2
- Non-intuitive generic implementation2
- Terrbible compared to Python/Batch Perormence1
- Returning Wildcard Types1
- Java's too statically, stronglly, and strictly typed1
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 code947
- Beautiful code835
- Rapid development780
- Large community682
- Open source426
- Elegant385
- Great community278
- Object oriented268
- Dynamic typing214
- Great standard library75
- Very fast56
- Functional programming51
- Scientific computing43
- Easy to learn43
- Great documentation33
- Matlab alternative26
- Productivity25
- Easy to read25
- Simple is better than complex21
- It's the way I think18
- Imperative17
- Very programmer and non-programmer friendly15
- Free15
- Machine learning support14
- Powerful14
- Powerfull language14
- Fast and simple13
- Scripting12
- Explicit is better than implicit9
- Unlimited power8
- Clear and easy and powerfull8
- Ease of development8
- Import antigravity7
- It's lean and fun to code6
- Print "life is short, use python"6
- I love snakes5
- Fast coding and good for competitions5
- There should be one-- and preferably only one --obvious5
- Python has great libraries for data processing5
- High Documented language5
- Although practicality beats purity5
- Flat is better than nested5
- Great for tooling5
- Readability counts4
- Rapid Prototyping4
- Lists, tuples, dictionaries3
- Socially engaged community3
- Now is better than never3
- Web scraping3
- Complex is better than complicated3
- Multiple Inheritence3
- Plotting3
- Beautiful is better than ugly3
- CG industry needs3
- Great for analytics3
- Easy to setup and run smooth2
- Generators2
- If the implementation is easy to explain, it may be a g2
- Special cases aren't special enough to break the rules2
- If the implementation is hard to explain, it's a bad id2
- Simple and easy to learn2
- Import this2
- Many types of collections2
- No cruft2
- Easy to learn and use2
- List comprehensions2
- Can understand easily who are new to programming1
- Because of Netflix1
- A-to-Z1
- Only one way to do it1
- It is Very easy , simple and will you be love programmi1
- Powerful language for AI1
- Flexible and easy1
- Better outcome1
- Batteries included1
- Pip install everything1
- Should START with this but not STICK with This1
- Good for hacking1
- Powerful0
- Still divided between python 2 and python 351
- Performance impact28
- Poor syntax for anonymous functions26
- GIL21
- Package management is a mess19
- Too imperative-oriented14
- Hard to understand12
- Dynamic typing12
- Very slow10
- Not everything is expression8
- Explicit self parameter in methods7
- Indentations matter a lot7
- Poor DSL capabilities6
- Incredibly slow6
- No anonymous functions6
- Requires C functions for dynamic modules6
- Hard to obfuscate5
- Threading5
- Fake object-oriented programming5
- The "lisp style" whitespaces5
- Official documentation is unclear.4
- Circular import4
- Lack of Syntax Sugar leads to "the pyramid of doom"4
- Not suitable for autocomplete4
- The benevolent-dictator-for-life quit4
- 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 safety138
- Fast125
- Open source83
- Minimal runtime75
- Pattern matching69
- Type inference61
- Concurrent55
- Algebraic data types55
- Efficient C bindings45
- Practical43
- Best advances in languages in 20 years36
- Fix for C/C++29
- Safe, fast, easy + friendly community29
- Stablity23
- Zero-cost abstractions22
- Closures22
- Extensive compiler checks19
- Great community18
- No NULL type16
- Completely cross platform: Windows, Linux, Android14
- Async/await14
- No Garbage Collection13
- Great documentations12
- High-performance12
- High performance11
- Super fast11
- Safety no runtime crashes10
- Fearless concurrency10
- Generics10
- Guaranteed thread data race safety10
- Compiler can generate Webassembly9
- Helpful compiler9
- Macros8
- Prevents data races8
- Easy Deployment8
- Painless dependency management7
- RLS provides great IDE support7
- Real multithreading6
- Good package management4
- Support on Other Languages4
- Hard to learn26
- Ownership learning curve23
- Unfriendly, verbose syntax11
- Variable shadowing4
- High size of builded executable4
- Many type operations make it difficult to follow4
- No jobs3
related Rust posts
Hello!
I'm a developer for over 9 years, and most of this time I've been working with C# and it is paying my bills until nowadays. But I'm seeking to learn other languages and expand the possibilities for the next years.
Now the question... I know Ruby is far from dead but is it still worth investing time in learning it? Or would be better to take Python, Golang, or even Rust? Or maybe another language.
Thanks in advance.
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).
- IOS Development130
- Personal assistant on steroids33
- Easy setup29
- Excellent integration with Clang17
- Beautiful3
- 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/