Need advice about which tool to choose?Ask the StackShare community!
Hello, I am still a student and would like to ask a question. Currently, I am developing in mobile development with Flutter in the frontend and Python in the backend part. Right now I have to make a choice about developing a mobile app or developing a backend to progress more professionally. My questions are as follows:
1) If I prefer the mobile application area, will I only work with the Ui/Ux developer with the front-end and code the designs in Swift Kotlin languages, am I responsible for the back-end software?
2) I have a product that generates new ideas so I like to control the development and work there because the backend is the brain, but are they independent from each other in the backend mobile application? Is the mobile app developer responsible for the backend software?
3) I don't like graphic design because I don't like it if it's not perfect and I get stressed. Am I responsible for the graphic design in the mobile app?
4) Is a mobile app developer also a backend developer?
I know these are very simple questions, but they are very important to me. Thanks for your answers.
Hi Hüseyin! 1-2) In my experience If you are a Mobile Applications Developer you will have the following responsabilities: - Develop (not designing) both functionality and screens of the app you are working - Consume (not develop) third party or self company owned APIs or Backend services - Distribution tasks. - Mantainance tasks. Now, there will always be companies wishing you know the whole thing (ui/ux, backend, frontend, mobile, cd/ci, data science, etc.). And of course it will be helpful for you to know a little bit of the stuff around mobile development, but it's not very common since it's not part of the responsabilities of a mobile app dev.
3) No, you are not responsable for the designs of your application, that's why companies have Product designers, ux designers, ui designers for preparing the screens, logos, color palettes, etc for products. As a developer your job is to see and examine the designs and take them from Figma, InVision, Zeplin, etc to the Code editor.
4) This is the thing, if you are working as a Mobile Developer you might know about Mobile development, not backend, not frontend, not ui ux. BUT if you know a little about backend that might be helpful although backend should not be your responsability.
I hope this makes sense to you. Cheers!
As a mobile developer, I'm usually a member of a larger team and it's usually another person's responsibility to develop the backend/API, and another person's to do the UX/design. Very very few teams use cross-platform tools like Flutter or React Native, because tools like those tend to make mediocre apps that scale poorly and are impossible to debug, so make sure to get familiar with Swift/iOS or Kotlin/Android (or both).
Hi! I think most of your questions led to these answers:
Mobile software developers don't responsible for the back-end part, or even graphic design. Of course, the back-end part should be done by a back-end developer. The graphic design, I'd say that if you work on a start-up, you might be the one who does since there isn't much manpower there, but in the larger company, they would have a designer especially in UI/UX. You'll have a mockup for the application that you need to follow. As a developer, you're expected to code, not design.
I've said that the responsibility isn't yours, but of course, you'll have an advantage over others if you know UI/UX, or back-end as well. That would help you a lot to be a good mobile developer.
Good luck!
Generally speaking, what are the most important things you expect a junior developer to know and be able to do from day 1 in your respective tech stack? Firm grasp of OOP? SQL? MVC? ORM? Algorithms and Datastructures? Understanding CRUD & the request response cycle? Database design? framework familiarity? Postman? Deployment? TDD? Git? Language-specific knowledge? Other things?
Start with building a solid understanding of computer science fundamentals. Understand the basics of building blocks - memory, processing, storage, networking. Understand what CPU bound, memory bound, I/O bound, network bound processes are. Understand the cost of accessing data from Memory vs. Disk vs Network. Understand how multiple CPU threads help in optimizing the performance of a single machine.
Build expertise on a programming language. You may pick any language of your choice. I would recommend starting with Java / Python. Make sure you know one language really well. Build a strong understanding of Data Structures and Algorithms. You should be able to develop an intuition on when to use what. You may practice DS and Algorithm problems, using the language of your choice, on a competitive coding platform (e.g. Leetcode) or by building your own App!
Next, get familiar with basic cloud computing and distributed system concepts. Here is a good resource for that - https://www.youtube.com/watch?v=p7NkTUyEE1o&ab_channel=JeffreyRichter If you understand the computer science fundamentals well, you will be able to apply those concepts here as well.
Hope it helps!
Ability to read code and willingness to try to reason flow of operations and information. Tools and technologies change, one doesn't need to have them in toolbelt from day one. All things you name are relevant in some contexts, so it's not bad to understand them.
For me, it is less of a specific technology you know (although I would prefer you have some knowledge of some of my team stack). It is more the way you get into a problem, the eagerness to learn more, the true sincerity to say "I don't know", the open mind to find solutions in different ways and the "Yes we can" mentality no matter how hard it is.
Just learn to learn. Learn to search and develop your logical thinking, that's all you need. No books, no deep study of how computers work, just logic and willingness to learn
Most employers don't expect from you to know how to implement CI/CD or any other funcy stuff. As junior developer you should focus on building a good toolset of good software practices & principles. Your soft skills are important as well. Learn about soft skills. Be eager to learn, be humble and show you talent and your creativity through your work. If you want to become a good developer ( at first) and a star engineer (at a later stage) then computer programming (coding) is your number one priority . Coding is like painting. Putting aside your talent, you have to practice a lot and improve your outcome each time. As junior developer you can learn how to write good code by studying existing code found in public git repositories (i e , github). As junior developer you should study some good software principles (i.e., DRY, KISS, YAGNI) and always recall them each time you write software code. As junior developer you should learn about coding standards and conventions. You will have to follow to your company's coding conventions (soon or later) as well as you will realize that you have to write code cosistent to the existing code base. At the end of the day, code consistency matters a lot. You have to improve your code day by day. If you manage to follow some good software practices you will find out that you will need an ORM to work with your database. Then you will realize that you need the X web framework to build your REST API etc. To sum up, you will start building a toolset with a single programming language and some good software practices & principles and then you will put new tools in it day-by-day.
Hey there, we are looking to develop our own layer 1 blockchain. We're splitting the responsibilities for origination, clearing, and settlement across three independent but cooperating node networks. We've gotten our Proof of Concept up using Ruby on Rails for the nodes, you can see it as the attached link. So far, so good. Now we are looking to convert it into a distributable and are trying to figure out which language is the best for this.
Essentially our needs from the language are: solid networking tools and speed, very fast execution of basic actions, some parallel execution, and able to compile the end product into an easy to distribute and use package for end users.
I was learning Rust, but I have a healthy amount of experience with Swift and right now, it's only me coding. I've only done iOS coding, but have built a fintech app from scratch that's now in the app store so I'm pretty familiar with the language and its benefits. Haven't experimented with Vapor or any of the application development tools, and I wanted to know if it is a crazy idea to develop a blockchain node in Swift instead.
Pick Rust. Rust can provide all what you need and has been a major language in blockchain/cryptocurrency industry. Swift is slower than Rust and does not have such support in the networking and domain field. Swift tooling is great only on macOS, therefore you are likely to have troubles on other platforms.
You can use swift of course. It’s more of a question of being performant.
You really want to try some basic operations and find what’s most performant for you.
Rust is wonderful for cloud applications requiring heavy concurrency, it has compile time checking for such things.
Go and C++ could be more performant in your case. Swift is really quite an obtuse language, with a lot of features, some which may complicate your implementation.
Also, you want to consider the market of developers who could help build it. If you use Go or C++ there is a larger collection of people who know the languages than there is with swift.
I'm making my university community web service with a team. (6 members myself included)
And we decided to use JavaScript, HTML, CSS (for sure, it's the basic of websites) but couldn't decide for the back end part.
There are tons of languages, tools, etc., but I'm really new to programming, so I'd like to get some help to figure out what tools we need.
So my question is this: are there any good examples of web community services we can mimic the tools or get an insight from them?
Since you're following Python, I would recomend using Django as your main back-end language. If you know Python it would be a great experience. Django is well documented on their official website: https://www.djangoproject.com/ I would also use React for front-end as well. Also this article is worth reading, I think progressive web app is something worth learning these days: https://web.dev/progressive-web-apps/ Hope that helps :)
Since your team is already using JavaScript, there's a great number of examples for backend services written with NodeJS. I'd recommend using Firebase, or any backend as a service (you can use that term to find alternatives), for setting up your backend as it is much easier for newer people to understand and lets you focus on your core application logic, and not provisioning servers, databases, etc.
Since you're team is already using JavaScript, there are alot of examples and open source projects written with NodeJs, so I preffer this language in your backend application and also I am recommended using Mongo DB with It for saving data in it, and also for your frontend application I am recommanded using VueJs.
Make it simple, most of projects doesnt need a AI, ML or big algorithms. If your project just serving end users take it to the web ready compatible. (Javascript, .Net, PHP Laravel)
Since you are already using JavaScript on the front end it would be easy to adopt the MERN (MongoDB, Express, React, NodeJS) stack which s all javascript based making it easy to transfer knowledge with the backend and front end
Kindly I don't find any help that solve this mystery I need more help if it will happen
I am new to programming and am a university student. While Computer Science is not my area of study, I am majoring in a subject that branches off computer science and health informatics, which deals with databases. I am currently in a programming fundamentals course at my university. My instructor mentioned that he develops in Java, but I have heard many good things about Python and JavaScript before taking his course; while we are only doing the fundamentals, I believe he is teaching us some in Java.
Since I am new to this, I'm not sure what I like more. I have also been self-teaching before this course but have not gotten deep into a particular language's fundamentals. I want to decide on a language and stick to it before I move to a new one after the first language is learned, but it is difficult deciding which language to start with. I want to develop medical software and medical mobile apps.
There's a reason many universities start with Java- it has strict rules and lays out code in a straightforward (if excessively-boiler-plate-heavy) way. For a beginner, Java is an excellent way to learn the fundamentals of programming before taking off the training wheels and continuing in more flexible, less-syntactically-rigorous direction like Python or JavaScript.
Sticking to a language before moving on is a common goal. However, in reality you are going to transition as you find languages that better suit you or your organization's requirements. Start with Java, not because it is optimal for your end goals, but because it will teach you what you like and dislike about programming and because your instructor is more familiar with it. That will give you a valuable perspective and allow you to make a more informed decision later.
There are many ways to solve problems in different languages, but the "best" language pragmatically is the one that you feel most comfortable using. In that respect, programming is like woodworking- you want to let the tool do the work. If there is another language that is "better" objectively but more difficult or confusing to you, you will counteract the anticipated benefits by having to struggle to write code.
The only way to solve this problem while avoiding opinions and tastes is to objectively look at what you are trying to build.
Thus the most efficient part of your question is your last sentence: you want to build medical software and medical mobile apps.
In that case, the answer is definitely Java, as is for all "real" software projects.
Python is good for data science, in other words for statistics. Its other competitive advantage is that it is easy to learn for beginners, but that would be a bad reason to use it for a "real" software project.
JavaScript is a mess you don't want to get into. The major reason why it's popular is that many people learn it first, because its very basic features are easy to learn, although they don't get you far, and because it used to have exclusivity on the web. But in reality it will make your life a lot harder after a few weeks, without any benefit. I know I'll get criticisms for that, but I stand fully by this position.
try with python because easy ... its good for u when u are learning basic's and they have many library that help's u with mobile app and desktop application but it is not the best ... when u are learn programming will with python then start with js basic's and then (react native) or flutter and also u can use java for mobile development bur i recommend first choices ..and for Desktop application java is have an amazing library (java fx ) for this type of application's and C# is one of most powerful language's for software development . good luck
Since you're already taking a CS course which involves Java, I would recommend you to keep learning it. Java's statically typed & OO nature forces you to learn a lot of important yet common programming fundamentles. C++, C# and Java type languages also force you write code more carefully (you have to think about the data types on your own and even allocate/de-allocate memories [C++ pointers]). That's why colleges prefer it as go to language for teaching CS concepts.
On the other hand, JS, Python and other such languages are dynamic in nature and hence, easy to learn. But you can't learn certain concepts (polymorphism, abstract classes, diamond problem etc) using these languages. So it makes sense to stick with Java in your case.
Since your instructor is using Java, i'd start with Java. If you want to get into mobile development, I'd check out flutter / dart. Good luck!
My advice to anyone learning to program is to not obsess on the language.. You SHOULD learn all languages.. Same as learning human spoken languages - the more you learn, the more ways your mind can interpret a new problem set. Learning them at the same time isn't a big deal (just like growing up in a bilingual home). Your language and your software stack are guaranteed to change 3 times in your career. Don't assume you're going to choose the "right one". And you wont waste any time learning one you never wind up using.
As a person who works on linux and OSX desktops, I have a personal bias against working for companies and software stacks that require C# or Visual Studio. But this is not due to their technical merits, but instead the OS as a platform condusive to efficient CLI toolchains and container management. But aside from that, I can use vi/IntelliJ-suite to write most languages, so language isn't a real concern. If you're windows bound, pretty much everything is available to you (through VMs and docker).
Ideally you do at least SOME full stack development learning. This means you'll need javascript, and thus nodejs would be a good stack to learn. If you ultimately like gaming or 3D, you might need C# and certainly python.
Any AI (which is a hot employment topic for the forseeable future) would like python skillz.
I personally love Java (and Android's Kotlin varient) for it's very very well designed multi-threaded libraries. go and rust are newer and thus do a slightly better job at this, but due to the open-source nature of java and editors that auto-reveal function call source code, it's very easy to learn how vendors implemented MT code and various other algorithms. Python should be equally "open" to 3rd party library review (and thus again how they solve complex problems), though a lot of times, I see python resorting to compiled C-libraries (and thus the cost to crack open the code and or trace through the code becomes too burdensome to bother).
While I've seen many people recommend Java (and I agree with them), I think you can learn both. But it depends on how much time you got. I recommend you first learn Java. Then python will be easy to learn, and focus mainly on modules for graphs. The reason why I recommend to learn both is because python is much better and easier to code about statistical analysis. But again do this only if you have time to just learn them.
If your project doesn't have anything to do with statistics and data analysis (I'm pretty sure you do though), learn only java. Also if you are wondering why I never mentioned JavaScript (JS), it's because i really don't recommend it. JS is much harder to learn and requires a lot of lines of code to do simple things.
Although java seems to be a good fit for you. It is a cumbersome language to get started out. It will be far easier for you to learn Python and stick with it long term. This is due to the fact you will be easily able to google things for python and you will spend less time learning the language, and more time using it to do what you want.
Making mobile apps is easier with Java due to the fact that google does not directly support app building with python. If this is your biggest priority stick with Java.
Javascript: This language is the best language to learn if you are making a website. However, for easy of use you can do all the database access stuff with python. And send back the data to your website. Javascript is also another cumbersome language in my opinion.
Each language has its use. If I were In your situation, I would choose the language that's easy to start with.
There is always trade off between them. If you want to make mobile app JavaScript is better. I suggest start the one you feel more close and learn all of them :) You are quite young you have enough time for them.
It would be great if you first go with Java. It could give you complete understanding of programming concepts. Such as data types. Later you can move to Python , which is great for data processing and Machin learning stuff.
Hi everyone.
I am willing to build a used car sales platform, which will have a lot of stock/photos and will rely a lot on the back end functions and data generating. Java seems to be a good choice, but what other options can I consider that can also be easily scalable as well as a little faster to write?
Thank you
Firstly, you must know that java and python are both amazing languages. But I recommend python mainly because of the variety of modules and packages available to do almost anything. If you are planning on adding graphs, you can use the matplotlib library and to add photos, use the pillow module. And just note that both of these aren't available by default, so you need to install them through pip.
Hi, Kamal! I don't know if your question is still relevant. But I would like to introduce you to our solution, perhaps it will be useful for future projects. We have developed a web application constructor that can be used to create almost any website or application https://falconspace.site/. The entire development stack is reduced to SQL only. The platform is easy to configure and make subsequent changes if necessary.
I am trying to make Roblox game which requires Lua. I quite don't want to go with Lua just because other tools just might let me do more projects later on. I heard that Python is most similar to Lua, but I am still not sure which tool to use. Java, I think it will help me with many stuff later on for websites, projects, and more!
Since you are trying to make a Roblox game, you have no other option than to use Lua, since Roblox only allows coding in Lua. Yes, you've heard right, Python is identical and as easy as Lua, although Lua is easier than Python. Beginning from Lua and then escalating to Python is recommended. Java is only helpful when you are creating a heavy, big-budget, enterprise-level product, otherwise, Python would suffice.
If you really hate lua check out roblox-ts, a tool that compiles typescript code into roblox lua. https://github.com/roblox-ts/roblox-ts
Hi everyone, I have just started to study web development, so I'm very new in this field. I would like to ask you which tools are most updated and good to use for getting a job in medium-big company. Front-end is basically not changing by time so much (as I understood by researching some info), so my question is about back-end tools. Which backend tools are most updated and requested by medium-big companies (I am searching for immediate job possibly)?
Thank you in advance Davit
Go with Python definetly. It's used everywhere by web developers for backend developments : API, website backend, workers... but also by data scientists (lot lot of resources, models and libraries in Python it's language #1). For the web parts, best web framework are in Python : https://stackshare.io/microframeworks (Flask #2 and Django #3). Java is good but trend is not great in terms of popularity amongs developers and tech leaders.
As per my experience java is most wanted for web development as of now. micro service is evolving . with frameworks like spring boot supports rapid development. Spring boot + Docker + kubernetes great combination.
I would recommend learning HTML, CSS, and JavaScript (most important). JavaScript forms the backbone of web development. And, there are many popular and widely used frameworks like Angular and React that heavily rely on the knowledge of JavaScript. The number of job opportunities are much more when it comes to javascript.
I would recommend Python as the programming language and as you are a new developer, Flask to start with. It gives you a solid understanding on the web patterns such as REST and will get you up and running in no time. However, I suggest you to read and study on front-end technologies like (React or Vue) and databases (SQL and NoSQL) and probably some NodeJS as well. First grasp the concepts (which Python is ideal for) then it does not really matter the language as such.
I wanted to develop a student app that possibly could be used by many teams (students from other schools)
I chose Ionic, because:
single codebase: previously, we used React Native for Android and Angular for web/PWA, which was troublesome
portability: runs on PWA (which is important, because iOS license is too expensive for school app), web, Android iOS (+ others, if needed)
full use of web technologies: Next.js, Tailwind, React in this example (in oppose to Flutter/Java/Kotlin)
stability and maintainability: low-entry level due to basic web technologies without new syntax (in oppose to React Native and Flutter), web is really stable and won't lose support (which doesn't have to be true with Flutter/Dart)
We chose Rust for our web API because the Warp crate makes it easy to compose high-performance and asynchronous APIs. Rust allows us to achieve high development velocity because it provides zero-cost abstractions and enforces strict type and memory-safety checks with high quality and actionable error messages.
I've yet to see a non-native application that I felt performed as well and/or provided the same user experience with Cordova/PhoneGap/Xamarin. Frankly, at best they all seemed like underpowered web applications deployed to a sandbox that ran on a phone. They didn't feel "slick" or "mobile-first" and in some cases the performance was unacceptable. At previous companies, we built a few of these apps at the client's insistence, and in every case, they re-engaged us about 18 months later to re-write the app(s) natively.
We are doing some research on React Native and Flutter, but I am not yet convinced that they can provide the same level of experience and performance as native, though I am trying to keep an open mind.
Python will be used in order to train machine learning models from our data. We chose python for this task because it is the most common language for machine learning. It has very performant libraries like numpy and scikit-learn that provide functionality for manipulating data and creating models that you cannot get in other languages like JavaScript and Java. Additionally, it is the most familiar language for us to use for machine learning because almost every machine learning course teaches ml using python.
Javascript will be used for both our frontend and backend on the web service. JavaScript is ubiquitous as the language to use for the frontend. For the backend, we decided to create our server using JavaScript because of its easy setup; using Express we can create a server in just a few short lines of code. It is simple not only to run the server locally, but to host it as well because any major service will support the language. JavaScript is a simple language to code in and familiar among our team members, so using it will help speed up development. Using JavaScript allows us to use NodeJS and npm, so we can use packages to easily set up the server, connect to a database and other convenient utilities. We also considered Python for our server. It is also very simple to create a server in Python, especially using flask. However, the extra familiarity with the JavaScript language and the ease of using packages were enough for us to pick JavaScript as our language of choice.
MACHINE LEARNING
Python is the default go-to for machine learning. It has a wide variety of useful packages such as pandas and numpy to aid with ML, as well as deep-learning frameworks. Furthermore, it is more production-friendly compared to other ML languages such as R.
Pytorch is a deep-learning framework that is both flexible and fast compared to Tensorflow + Keras. It is also well documented and has a large community to answer lingering questions.
Python: The top language in machine learning area because of the various open-source libraries. Our company will rely on open-source libraries for development as well.
Amazon EC2: Training machine learning model needs to be running on independent 3rd party computing resources. AWS EC2 can provide a variety of virtual computing resources based on what users need.
React+Javascript: React is popular and everyone in the team is familiar with it. React is an open-source JavaScript library that is used for building user interfaces specifically for single-page applications.
ExpressJS: Everyone in the team has used expressJS for development. It can create server-side web applications faster and smarter.
Amazon RDS: relational database service and free to use
Postman: Tool for the team to test API endpoint.
Circle CI: is lightweight and open. Therefore for faster deployment jobs, one can execute their codes on CircleCI as it deploys on scalable and robust cloud servers.
Docker: Easily pack, ship, and run any application as a lightweight, portable, self-sufficient container, which can run virtually anywhere
Github+Git: Julian is from Github so no other choice for us 😎
Slack: Everyone likes it and it's free
Python: Top one language in machine learning area because of the various open source libraries. Our company will rely on the open source libraries for development as well.
Amazon EC2: Training machine learning model needs to be ran on independent 3rd party computing resources. AWS EC2 can provide variety of virtual computing resources based on what users need.
React+Javascript: React is popular and everyone in the team is familiar with it. React is an open-source JavaScript library that is used for building user interfaces specifically for single-page applications.
ExpressJS: Everyone in the team has used expressJS for development. It can create server-side web applications faster and smarter.
Amazon RDS: relational database service and free to use
Postman: Tool for the team to test API end point.
Circle CI: is lightweight and open. Therefore for faster deployment jobs, one can execute their codes on CircleCI as it deploys on scalable and robust cloud servers.
Docker: Easily pack, ship, and run any application as a lightweight, portable, self-sufficient container, which can run virtually anywhere
Github+Git: Julian is from Github so no other choice for us 😎
Slack: Everyone likes it and it's free
Expo was a tool Macombey really wanted to utilize from the beginning. I have been working with React Native since 2016 and originally I had to use simulators in Xcode, install pods on top of node packages, configure certificates, and more abundant objectives that take time away from actual development. As a development studio, we have to move quick and get projects to our clients and partners in a matter of months.
Expo made this easy for us. We now have a mobile app for clients to download and test their project on, there is no need to install pods or configure Xcode, and development is super fast and reliable now.
I had a goal to create the simplest accounting software for Mac and Windows to help small businesses in Canada.
This led me to a long 2 years of exploration of the best language that could provide these features:
- Great overall productivity
- International wide-spread usage for long-term sustainability and easy to find documentation
- Versatility for creating websites and desktop softwares
- Enjoyable developper experience
- Ability to create good looking modern UIs
- Job openings with this language
I tried Python, Java, C# and C++ without finding what I was looking for.
When I discovered Javascript, I really knew it was the right language to use. Thinking of this today makes me realize even more how great a decision this has been to learn, use and master Javascript. It has been a fun, challenging and productive road on which I am still satisfied.
Obviously, when I refer to Javascript, it is not without implying the vast ecosystem around it. For me, JS is a whole universe in which almost every imaginable tools exist. It's awesome - for real. Thanks to all the contributors which have made it possible.
To be even clearer about how intense I am with Javascript, let's just say that my first passion was music. Until, I find coding with Javascript! Yep, I know!
So in conclusion, I chose Javascript because it is versatile, enjoyable, widely used, productive for both desktop softwares and websites with ability to create modern great looking user interfaces (assuming HTML and CSS are involved) and finally there are job openings.
Pros of Java
- Great libraries594
- 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
- Cross-platform7
- It's Java7
- Static typing7
- Portability6
- Long term language6
- Better than Ruby6
- Mature language thus stable systems6
- Vast Collections Library5
- Clojure5
- Used for Android development5
- Most developers favorite4
- Old tech4
- Testable3
- History3
- Stable platform, which many new languages depend on3
- Great Structure3
- Javadoc3
- Best martial for design3
- Type Safe2
- Faster than python2
Pros of Python
- Great libraries1.2K
- Readable code948
- 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
- Free15
- Very programmer and non-programmer friendly15
- Powerful14
- Machine learning support14
- Powerfull language14
- Fast and simple13
- Scripting12
- Explicit is better than implicit9
- Clear and easy and powerfull8
- Ease of development8
- Unlimited power8
- Import antigravity7
- It's lean and fun to code6
- Print "life is short, use python"6
- Python has great libraries for data processing5
- Fast coding and good for competitions5
- There should be one-- and preferably only one --obvious5
- High Documented language5
- I love snakes5
- Although practicality beats purity5
- Flat is better than nested5
- Great for tooling5
- Readability counts4
- Rapid Prototyping4
- Web scraping3
- Plotting3
- Multiple Inheritence3
- Complex is better than complicated3
- Beautiful is better than ugly3
- Now is better than never3
- Lists, tuples, dictionaries3
- Socially engaged community3
- Great for analytics3
- CG industry needs3
- Generators2
- Simple and easy to learn2
- Import this2
- No cruft2
- Easy to learn and use2
- List comprehensions2
- Pip install everything2
- 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
- Easy to setup and run smooth2
- Many types of collections2
- Flexible and easy1
- Powerful language for AI1
- Shitty1
- It is Very easy , simple and will you be love programmi1
- Batteries included1
- Can understand easily who are new to programming1
- Should START with this but not STICK with This1
- A-to-Z1
- Only one way to do it1
- Because of Netflix1
- Better outcome1
- Good for hacking1
- Powerful0
Pros of Swift
- Ios257
- Elegant179
- Not Objective-C125
- Backed by apple107
- Type inference92
- Generics60
- Playgrounds54
- Semicolon free49
- OSX38
- Tuples offer compound variables35
- Easy to learn24
- Clean Syntax23
- Open Source22
- Beautiful Code20
- Functional20
- Linux11
- Dynamic11
- Protocol-oriented programming10
- Promotes safe, readable code10
- Explicit optionals8
- No S-l-o-w JVM8
- Storyboard designer7
- Type safety5
- Super addicting language, great people, open, elegant5
- Optionals5
- Best UI concept5
- Feels like a better C++4
- Powerful4
- Swift is faster than Objective-C4
- Its friendly4
- Fail-safe4
- Highly Readable codes4
- Faster and looks better4
- Easy to Maintain3
- Easy to learn and work3
- Much more fun3
- Protocol extensions3
- Native3
- Its fun and damn fast3
- Strong Type safety3
- Protocol oriented programming2
- Esay2
- MacOS2
- Type Safe2
- All Cons C# and Java Swift Already has2
- Protocol as type2
- Objec1
- Can interface with C easily1
- Numbers with underbar1
- Optional chain1
- Runs Python 8 times faster1
- Actually don't have to own a mac1
- Free from Memory Leak1
- Swift is easier to understand for non-iOS developers.1
- Great for Multi-Threaded Programming1
Sign up to add or upvote prosMake informed product decisions
Cons of Java
- Verbosity33
- NullpointerException27
- Nightmare to Write16
- Overcomplexity is praised in community culture16
- Boiler plate code12
- Classpath hell prior to Java 98
- No REPL6
- No property4
- Code are too long3
- Non-intuitive generic implementation2
- There is not optional parameter2
- Floating-point errors2
- Java's too statically, stronglly, and strictly typed1
- Returning Wildcard Types1
- Terrbible compared to Python/Batch Perormence1
Cons of Python
- 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
Cons of Swift
- Must own a mac5
- Memory leaks are not uncommon2
- Very irritatingly picky about things that’s1
- Complicated process for exporting modules1
- Its classes compile to roughly 300 lines of assembly1
- Is a lot more effort than lua to make simple functions1
- Overly complex options makes it easy to create bad code0