Due to the recent hypes around Ajax and web development I’ve been thinking about a more effective method to write web applications running both on the server as on the client by writing code in just one environment and language instead of two: PHPavascript.
Having all kinds of fancy libraries to help you does help a lot; but you still got to manage transfering all data from the client and the server and back by hand; which espacially with javascript is quite tricky to do not only because it isn’t the easiest language to debug but also because every browser tends to do things a bit different with javascript.
It would be nice, I thought, to have a language for developing sererside and client side at the same time:
client TextBox mytextbox = TextBox.FromId("mytextbox"); int server function CalculateSum(first, second) { return first + second; } void client function ShowSum(first, second) { mytextbox.text = CalculateSum(first, second); } ShowSum(10,1000);
Basicly you mark a language entity to be either on the client or server side. The compiler would take care of the rest.
This would be really cool if it would be implemented but there would be quite a few issues:
- All client side functions and variables can be forged by the user; a naive programmer could put too much trust in functions on the client side
- Synchronizing variables on server and client side and executing functions on server and client side could with a suffisticated algorithm be managed pretty decently although it would still create a lot of overhead when the programmer doesn’t pay attention on the usage of his function/variable location. Having hundreds of variable transfers for one page would be a lot, although very possible when a programmer doesn’t take care or the compiler is too dumb.
- Language features available on the server side and only available on the client side with dirty hacks could be a bottleneck if the programmer doesnt take enough care. How to implement a mySQL connection for instance (not considering the fact that it wouldn’t be very safe in the first place)
- etc
Basicly it would be way easier to develop a web application but I don’t know what would be better: having a hard to handle situation as it is now where you are forced to think efficiently, or an easy to use environment as such a language could provide where everything works with the temptingness of not even thinking about what happens beneath the bonnet.
Although there still are these advantages:
- Vastly reduced development time
- Highly maintainable code; a compiler could even create seperate javascript files for each specific browser and compile to the desired server side language