Can you summarize the following document?
        
  

  在組合語言中要實現流程控制時,往往需要讓程式計數器前移或後移一段距離(例如前移5個位元),移動的距離會因程式碼變動而不同,例如在某處增加(或刪除)一行程式碼,程式中所有有越過更改程式碼的前移(及後移)指令都要重新計算需移動的距離。這樣的程式在閱讀時需經過計算才能知道任何跳躍指令的終點,程式的可讀性顯然不佳。  標記可以避免上述的問題。可以在程式任何需要的位置加上不同標記,跳躍指令直接指定其終點對應的標記,不需用人工計算程式計數器移動的距離。而且還可以使用有意義,可讀性高的標記,更加提升程式的可讀性。  以下是一段使用標記的組合語言程式:

  有些高階語言(例如C語言)允許在程式中加上標記,標示像Goto等直接跳躍指令的終點。不過這類指令若應用不當,很容易使得程式變得複雜而難以理解,即所謂的麵條式程式碼。  現代的高階語言提供許多結構化控制流程的指令,可以取代標記及直接跳躍指令。所以許多程式語言已不支援標記,或者只在極少數的場合下使用(如C#中的case)。  另一種可以取代標記及直接跳躍指令的是異常處理,一般會使用try和catch的指令。
程式語言中的標記是加在原始碼中識別用的字串,大部分的語言都將標記視為識別符號,後面要加一個冒號作為識別。