creating a better world by free software + develop some degree of consciousness = adds value for all life on the planet.
this is what software development is all about.
whatever makes reaching this goal easier/better is welcome.
some people are angry at PHP.
While i am not angry at PHP (more at MySQL’s massively grown RAM consumption :-D) – what is great about PHP you can code together a prototype of your application very fast.
Also Webservers such as Apache2 or Nginx are okay to install but NOT easy to configure. Lighttpd is 😀 but does not support .htaccess.
The real revolution with with GO is – GO does not need a webserver software at all.
„If you are working with PHP, you’re probably asking whether or not we need something like Nginx or Apache. The answer is we don’t, since Go listens to the TCP port by itself, and the function „sayhelloName“ is the logic function just like a controller in PHP.“ (src)
Which is something i often thought about – why do i actually need that webserver software 😀
less software = more security and performance
but if you need .htaccess to work – you would need to code it yourself.
So this makes me very curious.
This seemed to be one of the major intentions of the Golang developers.
Write your own webserver in a language almost as fast as C – leave out a lot of overhead and setup, maintenance and configuration.
Step-Debugging your application directly on the server is a little bit complicated to setup but doable. ( i should upload my phpDev-VM 😀 … will do that as soon as this server moved to a cheaper provider that provides bigger harddisks)
If i had to prioritize what features i need most from a language i would say:
- step debugging 😀 (can’t live without it, doable in PHP with XDebug and Eclipse but not easy to setup)
- easy to learn, simplicity, fast visual results are good for motivation, rapid prototyping
- software-quality and stability
- compile-time / easy and fast testing
- nobody likes to sit in front of a computer and wait for things to load or compile, especially if you are performing this step several hundred times a day
- modularity is key (have separately runnable files that you can test separately without running/compiling the whole (large) program)
- would be really cool if you can do both – run code immediately for testing – if tests are good – compile and upload to server.
- performance and scalability
while – of yourse – you could access a MySQL database in PHP with a one-liner, you probably won’t because you have to handle a lot of exceptions (mysql not responding, database not found, sql query returns errors)… so you write a seperate file with 1-2-300 lines of (REUSABLE!) code – just to connect to the database.
PHP is a grown language – which means over time a lot of things were added and changed.
Following these changes/updates can be stressfull. (you might have to rewrite (usually small) parts of your old code to run on newer PHP)
With PHP7 performance has once more gained ground (have not tested by MySQL class-library-file if it run’s without grant modification on it and if performance for database-queries has increased much… WordPress for example is making havy use of database queries) – but where PHP always seemed to have problems is scalability.
real world usecease examples:
„I even find that our code is higher quality just due to the fact that it’s written in Go.
I’m not entirely sure why this is, but I get a warm and fuzzy feeling about our stuff written in Go. Perhaps it’s the very strict compiler that even forces us to remove imports and variables that aren’t in use. Perhaps it’s the small amount of code you have to write to get a lot done. Maybe I’ll figure this out and write more about it some day.“
Kincaid, Jason (10 November 2009). „Google’s Go: A New Programming Language That’s Python Meets C++“. TechCrunch. Retrieved 18 January 2010.
benchmarking the alternatives:
|Language||CPU time||Slower than||Language
|C++ (optimized with -O2)||0.952||0.172||1.124||–||–||g++ 5.3.1||link|
|Java 8 (non-std lib)||1.332||0.096||1.428||27%||27%||1.8.0_72||link|
|Python 2.7 + PyPy||1.560||0.160||1.720||53%||20%||PyPy 4.0.1||link|
|C++ (not optimized)||2.988||0.168||3.156||181%||55%||g++ 5.3.1||link|
Brief analysis of the results:
- NodeJS got almost 2x faster.
- Java 8 seems almost 2x slower.
- Python has no significant change in the performance. Every new release is a little bit faster but overall Python is steadily 15x slower than C++.
- Perl has the same trend as Python and is steadily 22x slower than C++.
- PHP 5.x is the slowest with results between 47x to 60x behind C++.
- PHP 7 made the big surprise. It is about 10x faster than PHP 5.x, and about 3x faster than Python which is the next fastest script language… maybe Intel will build PHP-hardware-acceleration into their next CPU? 😀
The tests were run on a Debian Linux 64-bit machine.
You can download the source codes, an Excel results sheet, and the benchmark batch script at:
Can PHP code be compiled in a faster binary form?
Facebook created such a thing called HipHop but then dropped it and went a more Java-Virtual-Machine-Approach: HHVM is an open-source virtual machine designed for executing programs written in Hack and PHP.
HHVM uses a just-in-time (JIT) compilation approach to achieve superior performance while maintaining the development flexibility that PHP provides.
Wikipedia says it’s „Free Software“ … well what is this license then?
Copyright (c) 2009 The Go Authors. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of Google Inc. nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.