Need advice about which tool to choose?Ask the StackShare community!
Hack vs PHP: What are the differences?
Introduction
This Markdown code provides a comparison of the key differences between Hack and PHP, formatted for use in a website.
Error Prevention: Hack provides static typing, which allows for type-checking during the development process. This helps prevent certain types of errors and makes it easier to catch bugs early on. In contrast, PHP is dynamically typed, allowing for more flexibility but also potentially leading to more runtime errors.
Performance: Hack is known for its improved performance compared to PHP. It achieves this by using a just-in-time (JIT) compilation process, which optimizes code execution. PHP, on the other hand, relies on an interpreter for runtime execution, which can be slower in certain scenarios.
Language Features: Hack introduces additional language features not found in PHP. These include the nullable type system, which allows for the declaration of nullable types, and collections, which provide built-in data structures such as vectors and maps. PHP does not have these features natively, although they can be simulated to some extent.
Tooling and IDE Support: Hack benefits from being developed by Facebook, which has provided extensive tooling and IDE support specifically tailored for it. This includes a type checker, an integrated development environment, and support for autocompletion and code navigation. While PHP also has tooling and IDE support, it may not be as extensive or as finely integrated.
Compatibility with PHP: Hack is designed to be backwards-compatible with PHP, which means existing PHP codebases can be gradually migrated to Hack if desired. This ensures that the transition to Hack can be done incrementally, allowing for a smoother adoption process. PHP, however, does not provide the same level of compatibility with Hack, as it lacks some of its specific features and syntax.
Community and Libraries: PHP has a large and well-established community and extensive library ecosystem, with numerous third-party libraries and frameworks available. While Hack benefits from this ecosystem to some extent, it has a smaller community and fewer libraries specifically developed for it. This means that PHP may have more readily available resources and solutions for common problems.
In summary, Hack offers benefits such as error prevention, improved performance, additional language features, extensive tooling and IDE support, compatibility with PHP, and access to the larger PHP community and library ecosystem.
Hi, I am working as a web developer (PHP, Laravel, AngularJS, and MySQL) with more than 8 years of experience and looking for a tech stack that pays better. I have a little bit of knowledge of Core Java. For better opportunities, Should I learn Java, Spring Boot or Python. Or should I learn Drupal, WordPress or Magento? Any guidance would be really appreciated! Thanks.
Hard to answer it depend on market. Python + Flask + Jinja2 is better that SpringBoot. Java can be paid better now but I think that future is Python. I code very good in PHP, Java, Python - prefer Python for less code and more effects. PHP is little ugly and limited to web.
What do you think about Node JS with React? I feel like this stack is fairly paid more than PHP.
I am also a Laravel developer, in process of transitioning towards Node js.
If you wanna personally connect with me, hit me up at @izshreyansh on twitter.
I'm working in a company as a software engineer, Mainly we are focusing on PHP as the product is being developed in PHP (native) also there are a few products in Node.js, I tried to introduce Laravel but there is no luck to work on it. Now I have started learning Go language, should I focus more on Go or continue only with PHP and NodeJS. BTW I know PHP and NodeJS very well.
Be flexible, be agile in your personal and professional life. Don't be afraid to learn new things and step outside of your confort zone BUT with reason. Reason can be a career path or just money. Does Go belongs to your career path? Does Go belongs to your company's toolset? Do yo seek for new job oportunities? Some people follow a complete career path by using a single language i.e, PHP or java, but if you want to standout in the crowd this is not enough. You already know PHP. This is an oportunity to learn something new. In general, I would advise you to learn at least one language & library/framework per stack . This will help you to lead a team someday.
Hi there. I'm looking to build an employee time tracker web app. This should also be optimized for mobile. I'm trying to figure out what the best stack is for this. I have knowledge of Java, JavaScript, some C#. I don't mind learning a new language for this purpose. Any help or advice would be really awesome! Thanks.
Hi Otensia! I'd definitely recommend using the skills you've already got and building with JavaScript is a smart way to go these days. Most platform services have JavaScript/Node SDKs or NPM packages, many serverless platforms support Node in case you need to write any backend logic, and JavaScript is incredibly popular - meaning it will be easy to hire for, should you ever need to.
My advice would be "don't reinvent the wheel". If you already have a skill set that will work well to solve the problem at hand, and you don't need it for any other projects, don't spend the time jumping into a new language. If you're looking for an excuse to learn something new, it would be better to invest that time in learning a new platform/tool that compliments your knowledge of JavaScript. For this project, I might recommend using Netlify, Vercel, or Google Firebase to quickly and easily deploy your web app. If you need to add user authentication, there are great examples out there for Firebase Authentication, Auth0, or even Magic (a newcomer on the Auth scene, but very user friendly). All of these services work very well with a JavaScript-based application.
As you have knowledge of Javascript, I would go towards Vue/React in Frontend and Node (with suitable framework) with backend. From my point of view Java would be too bloated for suggested kind of an app. I myself use PHP as a backend a lot and React as frontend but moving thoughts towards full stack javascript world.
php is the best for beginners, and one of the best for web development at all, all the host servers can handle it, a basic knowledge in java is not enough for build a web site, but a basic knowledge in php is enough. learn php basics and oop and mvc design pattern or any framework like Laravel (optional), and javascript for frontend (a framework like React or Angular is optional but good) and you will build any web site you want.
We migrated from PHP to Angular/PHP to Angular/Node to React/Node/AWS Lambda. React/Node(Typescript)/Lambda seems to be good so far as we have developed few applications (large and small) using this stack so far. React/Node/Lambda is also good for mobile. If you are planning to use AWS, you can use the S3 bucket to store the frontend and Lambda or EC2 for backend APIs.
We migrated from PHP to Angular/PHP to Angular/Node to React/Node/AWS Lambda. React/Node(Typescript)/Lambda seems to be good so far as we have developed few applications (large and small) using this stack so far. React/Node/Lambda is also good for mobile. If you are planning to use AWS, you can use the S3 bucket to store the frontend and Lambda or EC2 for backend APIs.
For just a time tracker app? I'd recommend going with a cloud-based approach. A couple serverless functions in whatever language you choose, and the front end can be a static website hosted inside a storage service (blob for Azure, bucket for AWS, etc). This will ultimately probably save you a little time, and them a little money on hosting.
Hi
I want to build a tool to check asset availability (video, images, etc.) from third-party vendors. These vendors have APIs. However, this process should run daily basis and update the database with the status. This is a kind of separate process. I need to know what will be the good approach and technology for this?
hi - I think this depends on how you want to provide the information to the user. If you want to build a Wordpress-plugin: PHP If you want to build your own website: Python+Django / PHP / JavaScript+Node.js As Desktop application?
for what technologies you should use, this is depend on what technology do you prefer? your should think best structuing for your code because each API vendor has different to a nother one so it's better no merege code vendores together. your code must be using SOLID principle pattern and some design pattern such as Factory Pattern
The major advantage of Go is that you can run queries in parallel. Fire off a Go thread for each vendor and each thread can check the availability of assets from a specific vendor and update the database. Go supports hundreds of threads with ease.
your decision depend on what language do you know. if you know php you can use laravel framework
Hi, I would recommend Go because of strongly-typed nature which makes a developer more productive as it is less error prone compared to the other dynamic-typed language. Go also has cron-job library(powered by goroutines) that can help with your automated tasks.
Hello,
I want to generate dynamic CSS for each user with an expiry link.
I've created a cloud-based tool (Example - https://www.tablesgenerator.com/) where people can create tables and use them on their website by pasting the HTML generated by the tool.
Now, there are a few styling options needed, which can be done using CSS. As of now, I'm asking the users to copy the CSS and paste it in the "Custom CSS" section, which is a bit hectic work as they need to change the CSS every time if I make any changes to the styling.
So, I'm just wondering if there's a way to generate dynamic CSS for each user with an expiry link.
Currently, I have around 200 users, and what's the best way to do it?
Instead of having the user copy and paste the CSS directly, have them copy and paste the HTML that will include an external CSS file generated and hosted by your application. This will allow you to control when the stylesheet is updated as well as control privileges on who can request the file. Additionally, using a CDN service (e.g. Cloudflare) will allow you to cache the static assets being requested reducing overall server load.
When your server (and optionally CDN) no longer are serving the file, consider the link expired. Unique URLs can be generated using a multitude of methods but maybe consider if there is any benefit to the users if it follows the scheme: yourdomain.com/USERNAME/CUSTOM_NAME.css rather than something like: yourdomain.com/style/SOME-UNIQUE-HASH-1234.css
The best way, as usual, is a "it depends".
Still I would go to something as simple as storing the expire date+the generated css and other metadata in a table. If a user tries to access something that is expired than he's redirected to a specific page. Periodically (like once a day), a janitor process deletes the old data.
Hi, I have a project on my mind, and I need some help. First of all, I know it is all about personal preference, but I am a beginner in the back-end part. So, I am trying to figure out which language is better, for example, for user authentication and interaction between the users. Also, I don't know which framework is better for this work. My first thought was to use PHP, but after some research on the internet, I'm leaning towards Laravel. I will be grateful if you have some advice for me.
#newbie
First thoughts: * As a beginner you need to understand concepts first, all languages out there are great, each has it's own philosophy, each is better suited for a specific situation. Learn concepts first, do something, then you will understand the differences between them and why one should be chose over another for a task * As a project manager you want your project to come to an end. You will get lost in all the different solutions out there (and it's good), but don't get lost too far. Very often I see people getting lost in those debates and never achieving things, like someone writing a book that would still be choosing the font 6 months after (we've all done that it's ok, but we have to realise it)
Chances are your project can be equally good on any different stacks. I heard an interview of someone from Uber who said something like they started with python, went to node, went back to python and went to go, and with micro-services now they can have all of them all-together.
Last remark: from what I know Laravel is a framework for PHP, so it IS PHP. Just like Symphony for PHP, Express for Node.js, Koa for Node.js, Flask for Python ...
Now to answer your question :
- PHP has a big community, it is great and easy to start with, and you will definitely will learn real object oriented structure
- Node.js has a big community too, don't worry finding help will be as easy. It is less easy to start with but in my point of view it is a lot easier to keep on going with it on a long run. Why ? Because it's very easy to run a new project, and it executes javascript. How is it good ? Because chances are that your front will also be using javascript (React.js / View.js are crazy good). Thanks to that you will be able to master the language better because you will use it all day (and at first mastering one language is more valuable than barely knowing two) and you won't have to switch languages in your head when you code. And communication between front and back will be in json ... Which is crazy close to javascript.
Alexander is right, if you go with PHP take your time first to do things by yourself like building your own MVC, the benefit is huge and the risk is to never really be able to understand what's happening on a deeper level. (at some point you can switch to a framework though). He's also right on choosing a strongly typed language, problem is javascript is not. This is why, if you choose node, when you start being confident, add typesccript.
Hope it helps, good luck
Short answer, if it's a web project (and I guess it is) go with PHP and you can integrate NodeJs services later.
@adzaria (Ezra Fayet) gave a great answer and I'd like to emphasize the first part: As a beginner you need to understand concepts first
. For me that means to understand the web, how servers and requests work, APIs and few others.
Now, I'd like to add few things so, this is the long answer:
Why PHP?
- Everyone knows about the community - PHP is way older so you will find lots of resources and I am not only talking about learning - also lots of helpful tools and packages
- PHP is great for OOP - not perfect, but with PHP7 got great - and if you are a beginner you want to know good OOP for your future. Let's say JavaScript's OOP is a bit strange; I will not get into details but, let's say "it's not by the book". You can still learn JavaScript for your front-end
Why not Python? Python got popular because of AI - don't use PHP for AI and don't use Python for web applications. I can elaborate a lot here but I guess you get the point.
Why not NodeJs?
- NodeJs got popular because of sockets - and it works great, but as a service
- Try to find a good and affordable hosting for NodeJs. How about for Python?
- I would not ignore the security issues that it had and could appear. PHP is older and, therefore, wiser :)
Now, about a framework... is this a learning project or something that you need to do fast? My advice is to start a small project and not use any framework. However, you can use packages and inspire from a framework's architecture - Laravel is a good role model.
Why not start a big project? You will get distracted, get into details and product design stuff and get scared or border and abandon it. For your project you need an MVP - list of minimum required features that you put on paper - that you will complete. After that you can improve.
Good luck!
you can choose Node.js Here are my points
Node.js is build over chrome’s v8 and its works on non blocking io. Node.js have huge community and great packages (npm) to help you out in most cases and makes development faster Node.js has been adopted by many multi dollar company Hope this helps😊
I have used Laravel, but with Django you can develop faster, as authentication and admin panel are configured out of the box. It users SQLite by default and you won't have to worry about the database in the begginning
You cannot choose between Python | PHP | NodeJS Since they are entirely for Different purpose.
In Bird view
Python - Large Scale Projects and if you want a job in big IT company.
Node.JS - Huge computing projects and if you want job in Silicon valley startup.
PHP - Cost Effective and If you want start a business in near future.
Python, PHP and Node.js all are capable of being used to create good complex software. There are many examples of similar applications built on all of them. If I have to pick one, I would say consider Python and Django. It is fairly easy to develop web applications on top of this stack. Scaling and maintaining the application should also not be a problem given a lot of resources are available online.
The reason why i chose PHP is the amount of content you can find on the internet easily. As you quoted being a beginner, i think a more mature language would be better. And that's also another reason for following with PHP.
Python is simple and "mature", but it can be a bit hard to understand if you are a beginner. Python relies on heavy abstraction, and that's the reason behind it's simplicity. Python is an "easy to play, hard to master" language, i never recommend it to beginners. Also, one [maybe personal] reason why i don't like to use Python as back-end is: Python is very data-focused. So if your app has focus on business logic, Python wouldn't fit very well. And with that becomes an advantage, if your app has statistical focus, being data-focused or something like that, Python has huge advantage among all other languages due to many great tools the community has built.
About Node, it's like PHP, but less mature. It's as easy as PHP to find tools that can help you, for example, to abstract the database-connection's logic. But to find architectural-focused content, more advanced concepts, it's a lot harder. While that, Laravel's community, for example, has a lot of materials that involves those concepts.
Still, if you are really a beginner, i don't recommend using Laravel with PHP. Do things on plain PHP first, understand the reason behind using frameworks and Laravel's motivation.
Also, consider a strong-typed language first, those are considered more didatic, but less flexible.
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.
Coming from a C/C++ background, I picked up PHP 20 years ago. Today, the language is still in constant evolution while still having a stable base. It powers all of my backend project. It is fast to prototype and get started, and is supported almost everywhere.
Python and Node.js do not provide anything that PHP cannot already offer, so there is no point for me to switch to those language. Mature framework like Laravel provides real ease and speed of development to kick-start any new web project, be it a simple API or a robust ERP running on server-less architecture. There are libraries available for machine learning, crypto, web3 and pretty much anything you can think of.
I’m well aware of the hate that php receives and some of it is well warranted. But the ease of implementation for so many features that I find myself needed on a daily basis is head and shoulders above what I could achieve with JavaScript on my backend. I can do more without the need of frameworks but I still have many options if I want that. Especially with database handling I find many of the complainants about php to be pure rhetoric.
Go is a way faster than both Python and PHP, which is pretty understandable, but we were amazed at how good we adapted to use it. Go was a blessing for a team , since strict typing is making it very easy to develop and control everything inside team, so the quality was really good. We made huge leap forward in dev speed because of it.
We have a lot of experience in JavaScript, writing our services in NodeJS allows developers to transition to the back end without any friction, without having to learn a new language. There is also the option to write services in TypeScript, which adds an expressive type layer. The semi-shared ecosystem between front and back end is nice as well, though specifically NodeJS libraries sometimes suffer in quality, compared to other major languages.
As for why we didn't pick the other languages, most of it comes down to "personal preference" and historically grown code bases, but let's do some post-hoc deduction:
Go is a practical choice, reasonably easy to learn, but until we find performance issues with our NodeJS stack, there is simply no reason to switch. The benefits of using NodeJS so far outweigh those of picking Go. This might change in the future.
PHP is a language we're still using in big parts of our system, and are still sometimes writing new code in. Modern PHP has fixed some of its issues, and probably has the fastest development cycle time, but it suffers around modelling complex asynchronous tasks, and (on a personal note) lack of support for writing in a functional style.
We don't use Python, Elixir or Ruby, mostly because of personal preference and for historic reasons.
Rust, though I personally love and use it in my projects, would require us to specifically hire for that, as the learning curve is quite steep. Its web ecosystem is OK by now (see https://www.arewewebyet.org/), but in my opinion, it is still no where near that of the other web languages. In other words, we are not willing to pay the price for playing this innovation card.
Haskell, as with Rust, I personally adore, but is simply too esoteric for us. There are problem domains where it shines, ours is not one of them.
Node continues to be dominant force in the world of web apps, with it's signature async first non-blocking IO, and frankly mind bending speeds. PHP and Python are formable tools, I chose Node for the simplicity of Express as a good and performant server side API gateway platform, that works well with Angular.
Both PHP and Python are free but when it comes to web development PHP wins for sure. There is no doubt that Python is a powerful language but it is not optimal for web. PHP has issues... of course; but so does any other language.
Another reason I chose PHP is for community - it has one of the most resourceful communities from the internet and for a good reason: it evolved with the language itself.
The fact that OOP evolved so much in PHP makes me keep it for good :)
I chose Golang as a language to write Tango because it's super easy to get started with. I also considered Rust, but learning curve of it is much higher than in Golang. I felt like I would need to spend an endless amount of time to even get the hello world app working in Rust. While easy to learn, Golang still shows good performance, multithreading out of the box and fun to implement.
I also could choose PHP and create a phar-based tool, but I was not sure that it would be a good choice as I want to scale to be able to process Gbs of access log data
PHP is easy to learn and you can get up and running in no time, available on almost all hosting providers and you can find developers easily. It has some great frameworks for building your backend like Symfony and Laravel. However, it can be challenging when running an enterprise and needs some adjustments, very recommended for starting a new project or startup.
Websocket is trending this year, but there is another technology similar with Websocket (WS) is Server Sent Event (SSE). Those method have used similar Content-type, SSE is used to text/event-stream and WS is used to binary or text/octet-stream.
The different both of those method is sent. WS is an undirectional sending data both of client and server and SSE is whatever data on server will be push to client.
Pros of Hack
- Interoperates seamlessly with php6
- Open source6
- Backed by facebook5
- HHVM4
- PHP like2
- Great documentation2
- Generics2
- Fast1
- Used by facebook1
- Great type system0
- Easy to learn0
Pros of PHP
- Large community953
- Open source819
- Easy deployment767
- Great frameworks487
- The best glue on the web387
- Continual improvements235
- Good old web185
- Web foundation145
- Community packages135
- Tool support125
- Used by wordpress35
- Excellent documentation34
- Used by Facebook29
- Because of Symfony23
- Dynamic Language21
- Easy to learn17
- Cheap hosting17
- Very powerful web language15
- Awesome Language and easy to implement14
- Fast development14
- Because of Laravel14
- Composer13
- Flexibility, syntax, extensibility12
- Easiest deployment9
- Readable Code8
- Fast8
- Short development lead times7
- Most of the web uses it7
- Worst popularity quality ratio7
- Fastestest Time to Version 1.0 Deployments7
- Simple, flexible yet Scalable6
- Faster then ever6
- Open source and large community5
- Cheap to own4
- Has the best ecommerce(Magento,Prestashop,Opencart,etc)4
- Is like one zip of air4
- Open source and great framework4
- Large community, easy setup, easy deployment, framework4
- Easy to use and learn4
- Easy to learn, a big community, lot of frameworks4
- Great developer experience4
- I have no choice :(4
- Hard not to use2
- Walk away2
- Interpreted at the run time2
- FFI2
- Safe the planet2
- Used by STOMT2
- Fault tolerance2
- Great flexibility. From fast prototyping to large apps2
- Simplesaml1
- Bando1
- Secure1
- It can get you a lamborghini1
- Secure0
Sign up to add or upvote prosMake informed product decisions
Cons of Hack
Cons of PHP
- So easy to learn, good practices are hard to find22
- Inconsistent API16
- Fragmented community8
- Not secure6
- No routing system3
- Hard to debug3
- Old2