Which query performs better when searching a row where a column has maximum? Consider a simple table for example purposes: 

person(name varchar, age int)


I have a task to retrieve the oldest person. Which query is better in general for such problems?

Query 1: criteria with subquery for maximum value

SELECT p.* FROM person p WHERE p.age = (SELECT MAX(age) FROM person);


Query 2: ordering and selecting first row

SELECT p.* FROM person ORDER BY age DESC LIMIT 1;


I'm currently using PostgreSQL, but the question is I think platform independent.
I'm not sure if this is as platform independent as you think but I've been doing some fairly extensive testing on this in SQL Server recently and the first query was interestingly the fastest.  This was comparing against a number of "tricks" in SQL Server including using CROSS APPLY and windowing functions. But again YMMV in PostgreSQL.

Unless I'm mistaken (I don't know PostgreSQL) your second query will actually come up faster but only because it's going to give you the age for one person.