There are changes to how manifests are parsed in Puppet 4, you will probably have to make modifications. If you prefer to get it working and then migrate, by all means do. It's also possible to implement and fix many of these issues while remaining on 3.x, saving you from running two sets of infrastructure and reducing the step change.
If you wish to fix 4.x issues while on 3.x, you need to first upgrade to a current 3.x version as 3.1 will not raise warnings for these changes. Puppet 3.x to 4.x: Get upgrade-ready has a lot of good advice, but it boils down to the same - upgrade to the latest 3.x, understand the changes and fix them bit by bit.
Read the release notes for the versions you're upgrading through and to, e.g. the Puppet 3.8 deprecation list and implement the changes recommended. You can then switch to the future parser to get the same parser behaviour of Puppet 4 while running Puppet 3.8.
Lastly, if you intend to upgrade to 4.x then you should not install 4.0. Use the latest version available, which is 4.6 at the time of writing. Puppet follows semantic versioning so updates within a major version (e.g. 4.0 to 4.6) are backwards compatible. Use the latest available, it will still work.