I believe your QGIS workflow should be this:
1) Get both your datasets into shapefile format and make sure they have the same projection (I recommend using a UTM or an equal-area projection, but not a geodetic coordinate system, where positions correspond to lat/long).
2) In QGIS, make an area value column for both datasets. To do this, open the shapefile's attribute table, select Toggle Editing, then use the Field Calculator to create a new field to hold the area values; for example land_area, and type_area. Set the
field type to decimal, and set
precision to large values like 20/4, respectively. This might be inefficient, but it's safe. Finally, expand the Geometry node, then double-click on
$area and select OK. Disable Toggle Editing.
3) With Area fields created for both the land area polygons and the classes polyons, execute a geometric intersection (Vector menu > Geoprocessing Tools submenu > Intersect). Select the Land Area file as the input, and select the Land class file as the intersect, provide an output name and select OK. Make sure to wait for the result (QGIS will ask if you want it added to the map). Resist the temptation to click OK again, or even cancel, just wait for it, then when it's done add the new layer. At that point it's safe to click cancel.
4) Finally, open the attribute table for the intersection result, enable Toggle Editing on the layer, and open the Field Calculator. This time, create a new field,
area_pct, use the same setup for type/width/precision (decimal, 20, 4), and expand the Fields and Values node.. when you double-click on a field name, you'll add it to the expression you want QGIS to evaluate for each of your intersection geometries. If you used field names like I suggested above, you'll want to build an expression like this one:
("type_area" / "land_area" ) * 100
Then just execute it and you'll have the results you're after.
If you're unfamiliar with GIS basics, my concern is the first step may present the biggest challenges. But if you are a programmer, I'm sure you will be a quick study.