What would be a good language/framework pair for learning Web development? I know other people have asked this very same question (for example, Learning Web Development-Choosing a Language and Framework), however, my case is a little different, since I have some additional constraints:
The language the framework is written in must not be "opinionated" about the way I should do things. On the other hand, the framework being opinionated is not much of a problem, as I can always at some point ditch replace it for with another framework or even my own mini-framework.
The framework must let me see how it works, aka, I must have access to the source code. (Which is not the same as the framework being open source. I just want to be able to read the source.)
Also, since my Web server is a Windows 7 Professional x64 machine with Apache 2.2 installed:
The framework must provide convenient access to at least one database engine that can be installed on Windows 7 Professional x64.
Deployment of my Web applications must be as easy as installing an Apache module, editing the httpd.conf file properly and restarting Apache.
Optionally, in decreasing order of priority:
It is desirable that the language the framework is written in be dynamic.
It is desirable that the framework provide convenient access to any SQL database that can be installed on Windows 7 Professional x64.
It is desirable that the framework or a module/plugin compatible with the framework provide convenient access to a non-relational database that can be installed on Windows 7 Professional x64.
EDIT: Since my question has been labelled "subjective and argumentative" not only once but twice, I want to clarify some things:
If the word "ditch" was too crude, my apologies. I already ditched replaced it.
By specifying that the language not be "opinionated", my intention is to avoid having to ask "What is the recommendable/standard/approved/blessed/inherently-good way to do something?" in the future. I want to design my applications, desktop or Web, entirely on my own. If only to find out why some designs are not recommendable/standard/approved/blessed/inherently-good.
By specifying that the framework let me study how it works, my intention is to avoid having to ask "Why subsystem X throws error Y when I try to do Z?". I want to find it out on my own. If only for education purposes.
There is nothing else I can find that I think can potentially be interpreted as "subjective and argumentative". In particular, specifying an operating system and a Web server just means "I don't want to have to install other things than I already have installed on my PC". (Besides, Apache is pretty much the standard Web server.)
Yeah, the question is open ended. This is because I am asking for suggestions. And, since I am a complete newbie to Web development, there would be no point (at least for me) in arguing your suggestions. Also notice, the question is community wiki.
Smalltalk with Seaside would be the most fun. One click image can be downloaded, and the book is online.
1 Smalltalk insists that you organize your code in classes and methods, but is open to suggestions on how to do that. Seaside is an opinionated web framework, with a strong focus on DRY.
2 It is a Smalltalk, so all objects and sources are available and inspectable.
3 You can easily get started without a database. Larger scale persistence is done most easily by deploying on a glass object-oriented database (zero code needed). It runs in a VMWare image or on a linux or os-x machine. If you want to write code, you can use the GLORP ORM with SqueakDBX to connect to all databases supported by openDBX, or directly to PostgreSQL.
4 Does it have to be that difficult?
5 If it provides an ODBC adapter.
6 There are interfaces to various NoSQL databases.