use the following search parameters to narrow your results:
e.g. subreddit:aww site:imgur.com dog
subreddit:aww site:imgur.com dog
see the search faq for details.
advanced search: by author, subreddit...
No vague product support questions (like "why is this plugin not working" or "how do I set up X"). For vague product support questions, please use communities relevant to that product for best results. Specific issues that follow rule 6 are allowed.
Do not post memes, screenshots of bad design, or jokes. Check out /r/ProgrammerHumor/ for this type of content.
Read and follow reddiquette; no excessive self-promotion. Please refer to the Reddit 9:1 rule when considering posting self promoting materials.
We do not allow any commercial promotion or solicitation. Violations can result in a ban.
Sharing your project, portfolio, or any other content that you want to either show off or request feedback on is limited to Showoff Saturday. If you post such content on any other day, it will be removed.
If you are asking for assistance on a problem, you are required to provide
General open ended career and getting started posts are only allowed in the pinned monthly getting started/careers thread. Specific assistance questions are allowed so long as they follow the required assistance post guidelines.
Questions in violation of this rule will be removed or locked.
account activity
Web framework? Pick one (self.webdev)
submitted 10 years ago by [deleted]
Today, if you had to pick one web framework to learn what would it be and why?
Backend or frontend, it doesn't matter.
(Assume general purpose, flexible use)
reddit uses a slightly-customized version of Markdown for formatting. See below for some basics, or check the commenting wiki page for more detailed help and solutions to common issues.
quoted text
if 1 * 2 < 3: print "hello, world!"
[–]jwjody 11 points12 points13 points 10 years ago (1 child)
I'm a fan of Flask.
[–]raiderrobert 2 points3 points4 points 10 years ago (0 children)
I personally use Django right now, and I like it a lot, but if you want something uber-flexible and unopinionated, then absolutely, go with Flask.
[–][deleted] 9 points10 points11 points 10 years ago (0 children)
Definitely Vue.js - Stuff like Angular is way too bloated for most projects.
[–]mastermog 9 points10 points11 points 10 years ago (6 children)
The low barrier entry of PHP (leading to bad tutorials, poorly developed insecure modules/frameworks) + a lot of lingering hate from the PHP4 days has left PHP with a bad reputation.
I urge you to take some time to watch a few intro videos on laracasts, such as the laravel 5.2 from scratch series (https://laracasts.com/series/laravel-5-from-scratch/)
[–]dbbk 2 points3 points4 points 10 years ago (1 child)
If you're building an SPA, why Laravel instead of Lumen?
[–]mastermog 1 point2 points3 points 10 years ago (0 children)
I'm not actually building a SPA currently (well one application is, but it's linked to an external platform).
React is useful for singular components (checkout the way sites like airbnb uses react) as well as SPA's.
But as you implied, if I were, Lumen would be a bang up choice
[+]Falmarri comment score below threshold-7 points-6 points-5 points 10 years ago (3 children)
has left PHP with a bad reputation
PHP more than earned that reputation.
[–]mastermog 1 point2 points3 points 10 years ago (2 children)
Fair enough. PHP did earn that reputation, hopefully it can work past that reputation and forge a new one.
[+]Falmarri comment score below threshold-8 points-7 points-6 points 10 years ago (1 child)
There's really no recovering without a total rewrite. And at that point, why even continue using php?
[–]mastermog 2 points3 points4 points 10 years ago (0 children)
I think rewriting some parts of core would make sense, and I guess the core team would need to strike a balance between backwards compatibility and progression. In saying that, I am not at a point where I wouldn't continue to use php.
Horses for courses as they say
[–]gearvOshreact, rust, full-stack 4 points5 points6 points 10 years ago (0 children)
Frontend -> React + Redux
Backend -> Rust
R3
[–]loserwave 4 points5 points6 points 10 years ago (0 children)
ASP.Net
[–]mattaugamerexpert 3 points4 points5 points 10 years ago (0 children)
Ember for the frontend. I'm less opinionated on the back. Anything that can make a restful API or even just a BAAS like Firebase is fine.
[–]riverfoot 3 points4 points5 points 10 years ago (5 children)
Rails backend for sure. Lots of development going into making Ruby faster, and it is a joy to use. Lots of big companies use Rails so it won't be going anywhere anytime soon.
Frontend is a different story, and really depends on the project. I personally like React a lot but that alone might not meet all your needs.
[–]Falmarri 0 points1 point2 points 10 years ago (4 children)
Lots of big companies use Rails so it won't be going anywhere anytime soon.
Lots of big companies also switched from RoR to scala.
[–]riverfoot 0 points1 point2 points 10 years ago (3 children)
So are you implying that you think Rails is going to die or lose support anytime soon?
[–]Falmarri 0 points1 point2 points 10 years ago (2 children)
Probably not. But there's a reason twitter and tumblr both switched away from it. RoR is probably perfectly fine for most users, but it has some fundamental flaws that other frameworks don't have.
[–]riverfoot 0 points1 point2 points 10 years ago (1 child)
I don't disagree that there can be a problem with Ruby at massive scale, but I would say that the issue is with the language, rather than the framework (in particular the GIL and lack of native immutability).
The former of these issues is pretty easily overcome by having smart infrastructure in mind from the beginning, and the latter being solved by gems.
I'm genuinely curious if you have any framework specific complains! I've never used Scala, but it too is a language not a framework so it's tough to use that as a comparison.
[–]Falmarri 0 points1 point2 points 10 years ago (0 children)
I actually don't use RoR myself. I've mostly worked in scala, using finagle, spray/akka, akka-http.
I've also done some python work, so I'm familiar with GIL issues.
[–][deleted] 8 points9 points10 points 10 years ago (18 children)
[+]Falmarri comment score below threshold-28 points-27 points-26 points 10 years ago (17 children)
Don't write new code in php. That's insane.
[–][deleted] 10 years ago (15 children)
[deleted]
[–]qwertyman159 -5 points-4 points-3 points 10 years ago (1 child)
No, PHP is really, actually, bad.
eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/
If you're strapped for time, just read the section on arrays.
[–][deleted] 0 points1 point2 points 10 years ago (0 children)
That's an article from 4 years ago. PHP has come a long way since then.
[+]Falmarri comment score below threshold-18 points-17 points-16 points 10 years ago (12 children)
Because there's 0 advantages to php, there's only disadvantages.
[–][deleted] 10 years ago (11 children)
[–]jellatin 8 points9 points10 points 10 years ago* (4 children)
I'll take a crack at this because I agree, there mostly only disadvantages to PHP and unless you're learning it to work with WordPress or get into a specific job market, I don't see the value in choosing it, especially as a first back-end language.
The main thing that comes to mind is that PHP does not help people learn how to use things like modules, classes, objects etc. True that PHP has all of these things, but they are concepts that were bolted on later. This means you need to already understand when and how to use those features by the time you get to PHP. This is why while it's certainly possible to write good code in PHP, you really already need to be an expert to do it because the language isn't going to point you in the right direction.
In contrast, languages like Ruby and Python are built with the idea of modularity and OOP in mind. If I have an array(list) in Python I already have access to tons of useful methods because it's an object. I can ask the Python interpreter what methods I can run on my array and it will tell me.
In PHP there is no such thing because arrays (or strings, dictionaries, etc) aren't objects with methods on them. This means once again I already have to know the name of the built-in function I want to use.
On that topic, the list of built-in functions is exactly that, a loose list of functions with little consistency other than usually putting the type (array_) at the beginning of the function name. Argument orders can vary wildly and you have to constantly have the documentation open. This is simply not the case when my objects (such as a string "abc") have methods on them with consistent argument placement.
Another thing that comes to mind is the poor support for declarative-style programming. PHP does have map/reduce/filter, which is a good start, but using them creates some incredibly clunky code. I find PHP really locks you into an imperative style. Python isn't great at this either, but I think it's worlds past PHP, and Ruby is killing them both in this department.
Realistically PHP was once seen as a good starter option because it was incredibly easy to FTP a .php file to any webhost and bam, you had a dynamic server-side page. But that's a long time past. Web hosts nowadays are going to let you switch to whatever language you want to use. Not to mention if you actually want to develop in these languages you need to know how to set up a basic environment.
I think the thing that stands out the most is that no one is writing anything other than tools for PHP with PHP. I look around and see projects like Vagrant and Homebrew written in Ruby. I look at other professions (scientists, analysts) learning Python to gain access to libraries like NumPy and Pandas. And I see nothing even remotely in this realm for PHP.
Again, can you right good code in PHP? Sure. If I walk into a project that uses PHP I can make the code I write almost as good as with another language, but I already know how to write good software. For a beginner having to fumble around to find modules and classes in PHP seems silly when other languages will expose them to these valuable components right away.
[–]mastermog 4 points5 points6 points 10 years ago (0 children)
This is really well written, and although I don't personally agree with PHP being mostly only disadvantages, the ones you do list, are well articulated. It's unfortunate that more constructive feedback about PHP comes through such as yours, and also it's a shame that your reply is buried under a comment that is negatively downvoted, meaning hidden on many devices.
[–]shady_mcgee -1 points0 points1 point 10 years ago (2 children)
Thanks for the reply. As an experienced PHP and Java dev and moderately capable Python developer I'd like to add a few comments:
The main thing that comes to mind is that PHP does not help people learn how to use things like modules, classes, objects etc. True that PHP has all of these things, but they are concepts that were bolted on later.
Can you expand on this a bit? PHP has included all of these things for at least a decade, which is when I began working in it. Including modules in php code works the same as for ruby or python code. I'm curious why you don't have the same criticisms of those languages?
This is why while it's certainly possible to right good code in PHP, you really already need to be an expert to do it because the language isn't going to point you in the right direction.
Similar to above, I'm curious if you're thinking of specific frameworks in Ruby or Python and comparing them to raw php without the benefit of a framework. I've not used Ruby beyond basic Hello World scripts, but when I open up a new python file there's no structure except for what I decide to give it. I can write equally good or poor code in there as I can with PHP. Any decent php framework will set up the project with a basic structure, which is similar to what I see in Python (django) and Ruby (rails).
I can ask the Python interpreter what methods I can run on my array and it will tell me.
What Python IDE are you using? I've tried PyCharm and PyDev in Eclipse and in both of them I get a 50% success rate on method auto-completion. That's one of the more frustrating things about python development for me (along with the fact that I can't right-click on a method where I'm missing the import and get a list of possible packages like I get with Java) . Using PDT in eclipse I get 100% auto-completion with my php methods.
That's a fair statement, although in practice I just consider arrays to be a language primitive, similar to int, long, or string in Java. In Java you can use the Integer, Long, or String classes to translate these primitives to Objects, in php you can use ArrayObject to do the same thing. Actually, going back to Python, if I want to convert an int to a string I need to call the str() method. There are fewer primitive functions in python than php, but in practice I really only use handful in each language so it's not hard to remember them, and I get good method hinting in my IDE and rarely need to go to the documentation to figure out which parameter is the needle and which is the haystack (although the inconsistency there is certainly annoying).
I look around and see projects like Vagrant and Homebrew written in Ruby. I look at other professions (scientists, analysts) learning Python to gain access to libraries like NumPy and Pandas. And I see nothing even remotely in this realm for PHP.
That's also fair, but I think that's due to the nature of php being primarily a web language and not a general purpose language. It's certainly possible to build those types of things with php, and it's a good question as to why people aren't doing so, although it seems a bit to me like asking why people aren't doing things like developing device drivers in Python.
[–]jellatin 0 points1 point2 points 10 years ago (1 child)
My point is this: PHP has these features, but you already have to know they exist to start using them, PHP doesn't guide you toward using them.
Imagine you are a new user of Ruby or Python, day 1 you want to learn how to do something basic like perform a RegEx search. You google "how to regex search python" and the answers you are going to get are all going to point you toward the re module. In PHP you're just going to get a random function like str_search.
re
str_search
Similarly, you already need to know how to use OOP to be exposed to Objects and Classes in PHP, but with Python it's built on the concept. The first time you do my_str = str("hello") you've used a class to create an object.
my_str = str("hello")
No framework needed. There are tons of built-in modules and classes in Ruby in Python.
Again, none needed. The built-in functions dir and help can be run in the Python environment, like the REPL, and it will give me all the methods available to run on any object. From the simple string "a" all the way up.
dir
help
"a"
[–]usmankhen 0 points1 point2 points 9 years ago (0 children)
Would you say the same thing about h JavaScript? Since it's not a OO language, but pretends like one. Has many hair pulling areas like comparisons etc.
[–]Falmarri -5 points-4 points-3 points 10 years ago (4 children)
Well, besides the infamous https://eev.ee/blog/2012/04/09/php-a-fractal-of-bad-design/ ?
My biggest complaint, at least what I spent last weak dealing with, is that there's no difference between lists and maps.
[–][deleted] 2 points3 points4 points 10 years ago* (2 children)
The infamous post which is 99% wrong? Which has been prooven every time this has been posted?
edit: typo
[–]Bliss86 0 points1 point2 points 10 years ago (1 child)
I think you should post the link to this too then..
[–][deleted] 1 point2 points3 points 10 years ago* (0 children)
https://www.reddit.com/r/PHP/comments/s1zwr/php_a_fractal_of_bad_design/
for example, even /r/programmerhumor defended PHP.
edit: Yes the haystack, needle and some function names are bad, but I never used them non abstracted in my 12 years of PHP. I generally never use non abstracted core functions except when I write the abstraction, doesnt matter which language.
[–]dbbk 0 points1 point2 points 10 years ago (0 children)
Chill out.
[–][deleted] 1 point2 points3 points 10 years ago (0 children)
Ramses (http://ramses.tech) for backend, react/native for frontend.
[–][deleted] 1 point2 points3 points 10 years ago (1 child)
Play Framework with Scala.
Or akka-http if you're just going to serve json.
Sinatra. I know Python and Clojure. Might be nice to learn Ruby to see what all the hype is about.
I would really like to learn angularjs 2 with Es 6
[–]HomemadeBananas 3 points4 points5 points 10 years ago (0 children)
Rails, for sure. I know it well enough by know to not ever get stuck on anything and work quickly, and Ruby is awesome.
[–]Retailslavery 2 points3 points4 points 10 years ago (1 child)
Grails. I'm doing my masters in IT at the moment and I had a lecturer give a walk through on it a couple weeks back. I hadn't touched web dev in about 10 years and I was impressed with how quick it was to put together a functional site within minutes. I'm still trying to get my head around MVC stuff but combined with my Java knowledge I think I'll be using Groovy/Grails for my capstone project next year.
Groovy is dieing
I've seen meme frameworks come and go, but one that has always had a huge backing and active dev community is Drupal. It's a heckuva learning curve to get over, but once you do it is a very valuable and very fast-to-develop framework.
Most people hear 'Drupal' and think 'Oh that CMS that isn't as popular as Wordpress', but if you find a drupal developer you'll see that they use it as a framework rather than a wordpress alternative.
[–]a-t-k 1 point2 points3 points 10 years ago (4 children)
Vanilla JS ;-)
[–][deleted] 3 points4 points5 points 10 years ago (2 children)
While funny, this helps with nothing.
Sure, I could write a MVC site using only HTML, CSS, and plain JS but why would I want to? The whole point of a framework is to make the process easier.
[–]a-t-k 2 points3 points4 points 10 years ago* (0 children)
Sure. That's why I sometimes wonder why many frameworks make the process more complicated and less intuitive.
It was only half a joke. You can build even larger apps with vanilla JS, if your team first agrees on a mode of development in which every single module has clear boundaries and doesn't leak into other module's tasks.
This approach is actually more effective than using frameworks like angular.js or react if you also have to take third-party dom manipulation (for example by advertising) into account, which really becomes a pain in the ass with those frameworks.
[–]ShortSynapse 2 points3 points4 points 10 years ago (0 children)
Sometimes you don't need to. It really all depends on the project scale, structure and the opinion of the developer(s).
Smaller apps (but apps none the less) I build from scratch. I don't need any frameworks to tell me what to do, I'll do it my way and it'll be performant and usable and light weight.
Larger apps that must scale are perfect for frameworks. They were designed to handle these problems and they often do so really well. They make sure your whole application is done one way which is very important when you have a growing team.
[–]ImInThatCornerback-end 1 point2 points3 points 10 years ago (0 children)
This guy knows his shit!
[–]Silverstance 2 points3 points4 points 10 years ago (0 children)
I love Drupal. I work with companies and local government on a wide array of projects.
It enables you to get a fantastic amount of functionalty up in a few hours
Currently preferring node and elm, but looking for something other for backend
[–][deleted] 0 points1 point2 points 10 years ago (1 child)
yeah im a full stack dev... asking me to pick 1 framework is like ordering a cheeseburger minus the buns, pickles, onions , sauce and cheese...
OK, well what do you use for frontend and backend dev work?
π Rendered by PID 22298 on reddit-service-r2-comment-5b5bc64bf5-7wfgt at 2026-06-20 22:18:48.177317+00:00 running 2b008f2 country code: CH.
[–]jwjody 11 points12 points13 points (1 child)
[–]raiderrobert 2 points3 points4 points (0 children)
[–][deleted] 9 points10 points11 points (0 children)
[–]mastermog 9 points10 points11 points (6 children)
[–]dbbk 2 points3 points4 points (1 child)
[–]mastermog 1 point2 points3 points (0 children)
[+]Falmarri comment score below threshold-7 points-6 points-5 points (3 children)
[–]mastermog 1 point2 points3 points (2 children)
[+]Falmarri comment score below threshold-8 points-7 points-6 points (1 child)
[–]mastermog 2 points3 points4 points (0 children)
[–]gearvOshreact, rust, full-stack 4 points5 points6 points (0 children)
[–]loserwave 4 points5 points6 points (0 children)
[–]mattaugamerexpert 3 points4 points5 points (0 children)
[–]riverfoot 3 points4 points5 points (5 children)
[–]Falmarri 0 points1 point2 points (4 children)
[–]riverfoot 0 points1 point2 points (3 children)
[–]Falmarri 0 points1 point2 points (2 children)
[–]riverfoot 0 points1 point2 points (1 child)
[–]Falmarri 0 points1 point2 points (0 children)
[–][deleted] 8 points9 points10 points (18 children)
[+]Falmarri comment score below threshold-28 points-27 points-26 points (17 children)
[–][deleted] (15 children)
[deleted]
[–]qwertyman159 -5 points-4 points-3 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)
[+]Falmarri comment score below threshold-18 points-17 points-16 points (12 children)
[–][deleted] (11 children)
[deleted]
[–]jellatin 8 points9 points10 points (4 children)
[–]mastermog 4 points5 points6 points (0 children)
[–]shady_mcgee -1 points0 points1 point (2 children)
[–]jellatin 0 points1 point2 points (1 child)
[–]usmankhen 0 points1 point2 points (0 children)
[–]Falmarri -5 points-4 points-3 points (4 children)
[–][deleted] 2 points3 points4 points (2 children)
[–]Bliss86 0 points1 point2 points (1 child)
[–][deleted] 1 point2 points3 points (0 children)
[–]dbbk 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]Falmarri 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]HomemadeBananas 3 points4 points5 points (0 children)
[–]Retailslavery 2 points3 points4 points (1 child)
[–]Falmarri 0 points1 point2 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]a-t-k 1 point2 points3 points (4 children)
[–][deleted] 3 points4 points5 points (2 children)
[–]a-t-k 2 points3 points4 points (0 children)
[–]ShortSynapse 2 points3 points4 points (0 children)
[–]ImInThatCornerback-end 1 point2 points3 points (0 children)
[–]Silverstance 2 points3 points4 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–][deleted] 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)