顯示廣告
隱藏 ✕
※ 本文為 terievv 轉寄自 ptt.cc 更新時間: 2017-02-16 23:56:14
看板 Soft_Job
作者 poopoo888888 (阿川)
標題 [心得] 給網站初學者的建議:用RoR非常辛苦
時間 Fri Feb 19 20:13:49 2016


yo~小弟出社會工作兩三年了,有一些心得分享給想入門學寫網站的朋友:

用 Ruby on Rails 非常辛苦,用 PHP 非常舒服

網頁好讀版

http://blog.turn.tw/?p=2881

------------------------------------------------------

Rails是新手入門學寫網站最辛苦的選擇之一。

常常有文章或是課程建議新手用Rails入門寫網站,我認為這種建議十分危險。

Rails並不適合初學者使用。推薦沒有資訊背景的人去學Rails,很可能害他事倍功半。

新手用Rails入門的問題在哪?

Rails最大的問題就在於:它從一開始就不是設計給新手用的。

它是設計給工程師快速開發用的。

軟體工程沒有萬靈丹。適合老手的,對新手來說一定太難;

適合新手的,對老手來說一定太囉唆。

Rails為了替工程師節省反覆設定(configuration)的時間,

而預設了許多立場(convention)。

新手連web application的基本知識、環境設定都不知道,

直接去學前人的framework和convention,絕對不是好事,也非常辛苦。

我們從Rails的官方入門導覽來舉例吧:

http://guides.rubyonrails.org/getting_started.html

對新手來說,這份導覽真是充滿了災難。

它就跟大部份的rails教材一樣,會帶新手去學很沒必要的4件事情:

1. 新手沒必要學框架的檔案結構
2. 新手沒必要學框架的command line指令
3. 新手沒必要學helper
4. 新手沒必要學migration

1. 新手沒必要學框架的檔案結構

新手打開導覽之後,映入眼簾的,是這個介紹檔案結構的嚇人表格:

FILE/FOLDER     PURPOSE
app/    Contains the controllers, models, views, helpers, mailers and assets
for your application. You’ll focus on this folder for the remainder of this
guide.
bin/    Contains the rails script that starts your app and can contain other
scripts you use to setup, deploy or run your application.
config/ Configure your application’s routes, database, and more. This is
covered in more detail in Configuring Rails Applications.
config.ru       Rack configuration for Rack based servers used to start the
application.
db/     Contains your current database schema, as well as the database
migrations.
Gemfile
Gemfile.lock    These files allow you to specify what gem dependencies are
needed for your Rails application. These files are used by the Bundler gem. For
more information about Bundler, see the Bundler website.
lib/    Extended modules for your application.
log/    Application log files.
public/ The only folder seen by the world as-is. Contains static files and
compiled assets.
Rakefile        This file locates and loads tasks that can be run from the command
line. The task definitions are defined throughout the components of Rails.
Rather than changing Rakefile, you should add your own tasks by adding files to
the lib/tasks directory of your application.
README.rdoc     This is a brief instruction manual for your application. You
should edit this file to tell others what your application does, how to set it
up, and so on.
test/   Unit tests, fixtures, and other test apparatus. These are covered in
Testing Rails Applications.
tmp/    Temporary files (like cache, pid, and session files).
vendor/ A place for all third-party code. In a typical Rails application
this includes vendored gems.

初學者一開始只想做個部落格或是個人網頁而已,真的有必要去面對這麼多檔案嗎?

這種架構是框架替工程師的軟體專案長遠著想,而詳細分工的結果。

新手並沒有要開發大型專案,做出幾個能跑能動的頁面就夠了。

結構或是程式碼醜一點無所謂,好上手就好,實在沒必要一開始就碰這麼複雜的。

2. 新手沒必要學框架的 command line指令

官方導覽介紹了產生controller相關檔案的指令:

$ bin/rails generate controller welcome index

然後rails會顯示以下訊息:

create  app/controllers/welcome_controller.rb
 route  get 'welcome/index'
invoke  erb
create    app/views/welcome
create    app/views/welcome/index.html.erb
invoke  test_unit
create    test/controllers/welcome_controller_test.rb
invoke  helper
create    app/helpers/welcome_helper.rb
invoke  assets
invoke    coffee
create      app/assets/javascripts/welcome.js.coffee
invoke    scss
create      app/assets/stylesheets/welcome.css.scss

只不過想做個簡單頁面,居然跑出了好幾個檔案。對新手來說,這非常不友善。

新手想要的,是在資料夾裡面一次建立一個檔案,然後在裡面寫一點東西。

接著看看程式有什麼反應、跑不跑得動。這樣他才知道自己在做什麼、在學什麼。

像這種打一個指令產生一堆檔案的學習方法,就算真的「快速做出了一點東西」,

之後大概連怎麼修改程式都不知道。如此黑箱,很容易帶來挫折感。


3. 新手沒必要學helper

官方導覽提到了Form的寫法如下:


<%= form_for :article do |f| %>
  <p>
    <%= f.label :title %><br>
    <%= f.text_field :title %>
  </p>

  <p>
    <%= f.label :text %><br>
    <%= f.text_area :text %>
  </p>

  <p>
    <%= f.submit %>
  </p>
<% end %>

這完全是災難一場。

新手該學的不是這種ERB語法,而是原始HTML的Form element語法:


<form>
    <label>title</label>
    <input />
    <label>text</label>
    <textarea></textarea>
</form>

Form element的語法一點都不難,網路上到處找都有。

新手學HTML基本知識就夠了。接著再學一些HTTP的基本知識,

了解瀏覽器如何將表單的資料丟給後端程式互動。

學這些基本知識才踏實、才有成就感。

helper是工程師為了少寫HTML而使用的進階工具。

初學者連基本的HTML都不會,學什麼helper?徒然增加挫折感而已。

4. 新手沒必要學migration

migration是工程師方便管理資料庫結構的版本,以及在團隊成員間同步化的工具。

初學者根本沒有這種管理資料庫的需求。

新手如果要學資料庫操作,應該去學資料庫軟體(譬如說MySQL)本身的語法,這樣才會有
學到資料庫操作的扎實感覺。

如果是一開始不想學資料庫語法的新手,那更不應該去學migration。

他應該去安裝一款有圖形化介面的資料庫管理軟體,

用滑鼠按一按把資料表做出來就可以了。



初學者最舒服的學習路徑:PHP + 懶人包

初學者對於開發網站的想像,不外乎就是「寫幾行程式碼,做出幾個小頁面」。

他一開始對於環境安裝與調整沒有興趣,也負荷不來。

這個時候,使用PHP搭配懶人包開發會是最舒服的路徑。

學寫網站至少要碰幾個東西:


HTML
CSS
client-side programming (JavaScript)
server-side programming (ex: Ruby on Rails 或是 PHP)
資料庫
架server

我對新手學習的建議是這樣的:

1. HTML和CSS幾乎沒有入門門檻,線上隨便找教材都有。
2. JavaScript主要是用來做瀏覽器上的一些動態效果,非必要。一開始先不學。
3. 資料庫跟架server一開始超出新手想像,可以先安裝懶人包帶過。
4. server-side programming才是新手原本理解的「學寫網站」。

基於以上四點建議,新手一開始把心力放在1、4即可,然後從以下懶人包擇一安裝:

AppServ
Wamp
Xampp

這些懶人包會直接幫你裝好server、資料庫與PHP。

資料庫相關的操作可以先透過phpMyAdmin之類的軟體用滑鼠操作。

接著在線上找PHP教學之類的東西,以「一個檔案就可以做出一個網頁」的方式開始學習。

在懶人包的協助下,按照興趣慢慢摸索HTML, CSS和PHP的知識。


之後再根據目標,從以下三個方向更進一步學習:

急著讓網站上線者,可以把程式碼交給工程師朋友,請他幫忙買網址、架起來。

對server side工程有興趣者,可以補強資料庫、伺服器等等知識。試著不依靠懶人包就獨
立搞定環境、挑一個框架學習之類的。

對client side工程有興趣者,可以補強JavaScript的知識,學習前端相關知識。

入門最重要的是循序漸進,先想辦法做出一個能動的網站,

之後再根據需求,把缺少的技能一個一個補起來。

在「實作出成品」與「學習新知識」之間來回進行,反覆累積成就感與能力。

一口氣全部一起學,只會非常茫然、倍感挫折而已。況且根本沒有必要。

用Rails就更慘了,在一開始就得學一些工程師用的進階手法。

總結起來,我給網站初學者的建議就是:用Ruby on Rails 非常辛苦,用PHP非常舒服。

--
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.170.51
※ 文章代碼(AID): #1MnmS0f4 (Soft_Job)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1455884032.A.A44.html
※ 編輯: poopoo888888 (1.161.170.51), 02/19/2016 20:16:42
manaup: PHP是最好的語言!!!1F 02/19 20:20
CrystalNik: 推2F 02/19 20:29
WorkForFree:3F 02/19 20:42
synd: 大神表示:4F 02/19 21:08
kenny61410: 推5F 02/19 21:24
etoanik: 大家都不再鄙視PHP了嗎 XD....6F 02/19 21:34
ddoll288: RoR 薪水還是屌打 PHP 啊7F 02/19 21:38
NCUking: 屌打?? FB工程師表示:...8F 02/19 21:42
infit: 屌打?所以哪個語言框架薪水高就學該語言嗎?9F 02/19 21:45
NCUking: MmNRP一狗票人用最不潮的C 待遇屌打潮潮的Ruby10F 02/19 21:50
mepowerlmay: 屌打?上次看到台中要ror 給50k的樣子....11F 02/19 21:52
kai5566: 那nodejs呢?12F 02/19 21:53
johnny94: PHP近期也算浴火重生了啦13F 02/19 21:56
manaup: TIOBE2015兵器譜排名 PHP屌打Ruby跟javascript14F 02/19 21:57
billy0131: 我怎覺得是有毒文...而且為什麼獨厚PHP...15F 02/19 21:58
billy0131: python也有light-weight web framework如bottle, flask
Yshuan: 推 我覺得要循序漸進 由前而後17F 02/19 22:08
descent: 基本知識還是要理解18F 02/19 22:10
aiyswu: node.js比php還要懶吧19F 02/19 22:10
vn509942: 需要啥就用啥20F 02/19 22:19
q26766: 又是一個用語言跟框架比的21F 02/19 22:27
fo40225: 樓上 問題是ruby很少有超輕量級的web solution的討論22F 02/19 22:34
fo40225: 原PO意思就是不要讓新手碰RoR PHP剛好是一個無框架好上手
fo40225: 的選擇 這也是PHP當初設計的中心思想
littleshan: 呃,ruby明明就有sinatra不是嗎25F 02/19 22:39
q26766: 那何不用laravel ci 來比看看26F 02/19 22:39
fo40225: 所以要直接請新手上laravel的意思? 完全沒碰過前後端的?27F 02/19 22:49
fo40225: 如果是我會推新手用ASP.NET Web Pages 2 w/ Razor syntax
fo40225: 來上手 這也是簡單的選擇 未來要上ASP.NET MVC也可銜接
fo40225: 教學網址 http://tinyurl.com/oaqodru
fo40225: http://tinyurl.com/z3krnga也不一定要照教學用WebMatrix
fo40225: Visual Studio Community 2015也行 這東西的問題大概就在
fo40225: 能見度太低 以及是微軟的技術就會被黑吧
INTJ: asp.net中文書超多超齊~  php在books搜尋的第一個結果...34F 02/19 22:57
fo40225: ASP.NET的問題在於不能掉到Webform的坑裡XD35F 02/19 22:58
q26766: 他如果想表達fw對新手不友善怎不使用laravel 做比較?36F 02/19 22:59
q26766: 而是選擇一個一個跟php壓根沒關係的FW 來戰
hgkiller01: 學.net 千萬不要掉到WebForm的坑...因為完全不了解Web38F 02/19 23:05
hgkiller01: 的運作原理就去學Webform的確很快 拉一拉就有東西了
fo40225: 因為沒人會推新手學laravel 可是會有人推新手學RoR40F 02/19 23:06
hgkiller01: 但是相對的如果你不了解JS CSS HTML就只會拉一拉控制41F 02/19 23:07
hgkiller01: 項 的方法已經不能滿足目前使用者對Web的需求 觀念不
hgkiller01: 正確以後 要滿足一些需求都做不到
q26766: 你這句有點忠肯44F 02/19 23:14
fo40225: Webform是微軟當年挖給視窗開發人員跳的 Java相對應的jsf45F 02/19 23:16
fo40225: 都不知道去哪了 Webform還活著
Blueshiva: 推新手學PHP,這樣我們才有SQL injection可以玩 XD47F 02/19 23:21
fo40225: 所有的SQL教學都應該要標註不可組合SQL字串與使用參數化48F 02/19 23:24
fo40225: 查詢才對......
fo40225: 應該說 不可組合來自使用者輸入的字串成為SQL指令
BignoZe: 你自己用 lavaral 然後叫別人不要不要用 Ruby on Rails ?51F 02/19 23:49
vi000246: .net有不錯的進階書 不知php比較進階的書是什麼52F 02/20 00:03
EQQD: 是因為php 7.0效能躍進  所以浴火重生嗎XD?53F 02/20 00:29
sp063439: 所以 ror 的缺幾乎都找 senior,嗚嗚54F 02/20 00:38
johnny94: 其實他常常發這種爭議文啦…像之前的 MVC 也是55F 02/20 00:55
Argos: 為何ROR不跟Laravel比?我想是程式語言的「目標」的關係吧56F 02/20 01:01
Argos: Ruby一開始不是鎖定在Web使用 所以要拿來做網站就一定要裝
Argos: 一些東西 那PHP一開始就是為了網站而生 配套的懶人包也有人
Argos: 做好好 一鍵安裝完就能直接在html碼寫程式 對新手來說真的
Argos: 方便太多太多這是事實 要知道 真正的新手 說不定連AppServ
Argos: 一鍵安裝完都可能會出問題...
Argos: 簡單說現在Ruby就是缺少一種像AppServ這樣的懶到不能在懶的
Argos: 超懶包 快寫信給Matz桑跟DHH請他們也弄一個啊XDD
sp063439: 用肉卷開 vm 阿(?) ref. tinyurl.com/j4zrlhb64F 02/20 01:14
jessichiou: 推,程式能力可以繼承,但是從framework不去讀source65F 02/20 04:14
jessichiou:  code註定悲劇
rugia813: 想請問如果已經學了一陣子的RAILS是應該繼續下去還是67F 02/20 08:35
rugia813: 重新學PHP呢? 最近看了一下104,RAILS職缺超少 又沒新
rugia813: 手缺...
rugia813: 可是重學PHP又不知道要再花多久
coronach: 用RoR比PHP很怪,應該提倡的是新手應該先學好基本再用Fr71F 02/20 09:32
coronach: amework
johnny94: 學了一陣子 ror 如果還可以上手,幹嘛再換回去PHP73F 02/20 11:33
spjay1: 小魯有菜鳥鐵路工經驗 但還是收到很多無聲卡74F 02/20 12:38
hgkiller01: 其實.net MVC 和ROR的架構很像而且很適合初學XD75F 02/20 18:25
MarsZ: 學 rails 的過程的確頗辛苦的,不過連這苦都過不了的話...76F 02/20 22:20
MarsZ: 建議還是去賣雞排吧 XD
amazing2014: 推.NET MVC 基礎觀念引入清晰 注意WebForm78F 02/20 22:48
montano: django...79F 02/21 02:56
goldflower: 賣雞排不一定會輸啊80F 02/21 23:36
PolarGG: 我是HTML-> CSS-> javascript-> MVC架構->mysql81F 02/29 15:21
PolarGG: 還有PHP 我是有寫過C拉所以PHP很多部分是在學架構不是語

--
※ 看板: terievv 文章推薦值: 1 目前人氣: 0 累積人氣: 753 
分享網址: 複製 已複製
( ̄︶ ̄)b Leon 說讚!
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇