SMC is a ON-OFF form of control that is more concerned with how the error and its derivatives are decreasing rather than calculating a control output like a PID. For instance a simple temperature control system may turn an heater on when the E=SP-PV If E >=0 THEN ON ELSE OFF ENDIF. This crude method will over shoot because the of lag in response. However, if the rate in change in error is taken into account then one can do this. IF tau*E'+E >=0 then ON ELSE OFF ENDIF. Now if the error rate, E', is changing rapidly the tau*E' may be more negative than the E is positive and the output will go off before the PV reaches the SP and not overshoot the SP. Ideally tau is about the same as the system time constant and if the system has more than one pole you may need a higher order system IF ( tau1*tau2*E"+(tau1+tau2)*E'+E>=0 THEN ON ELSE OFF.
You can see the code for a SMC is still pretty simple compare to a PID. There is no integrator to wind up. Non-linearity, gain or load changes are not much of a problem. This makes SMCs ideal for some applications but the system must be able to handle an ON/OFF type of control. Temperature systems are perfect because SCRs can be turned on and off every second without problems. The is nothing physical that moves. Controlling mechanical things are more of a problem because the control loop execute be done at a high rate so the system doesn't appear to hum or chatter. Another problem is dead time. Dead time will cause the SMC system to hunt unless there is extra code like an observer where the SMC controls the observer that doesn't have the dead time.