SOQL requires field names; it enforces the practice that developers should only be querying fields they need. If you absolutely need to get all fields, say, for replication purposes, consider running a simple
SELECT Id FROM ... query, then using a
retrieve(FieldList, SObjectType, ID recordIds). This will yield better performance for large data sets. Using this method would use two API calls per up to 2,000 records that are retrieved. Also, if you're purely replicating, consider using
getDeleted() instead of using queries.
Edit: In response to the comment, here's some more information.
The retrieve call is a SOAP API call that allows you to retrieve records by their unique key (called Id). The documentation for this call is in the SOAP API Developer's Guide.
You use it in Java, Ruby, Perl, PHP, C#, or any other language that supports SOAP. In input is, as mentioned originally, a list of fields, the type of object to retrieve, and a list of ID values. The result is a SOAP-based response that translates to whatever the SOAP support translates the records to in the native data type (e.g. a class, stdClass, XmlNode, or whatever). The effective type will be an sObject array or list, whatever terminology is valid for your development language.